Observed since 21 Oct, 09:08 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agimat-agent
基于 FastAPI 和 LangGraph 的智能代理管理平台
基于 FastAPI 和 LangGraph 的智能代理管理平台,支持多种大语言模型和MCP工具集成。
claude-3-5-sonnet - 最新平衡型模型claude-3-5-haiku - 快速轻量级模型claude-3-opus - 最强推理能力模型gemini-1.5-pro - 高性能多模态模型gemini-1.5-flash - 快速响应模型gpt-4o-mini - 轻量级多模态模型gpt-4o - 完整多模态模型doubao-1-5-lite-32k-250115 - 字节跳动豆包# 克隆项目
git clone <repository-url>
cd agimat-agent
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# 或 .venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 同步依赖
uv sync
# 直接启动
uv run main.py
AGI-MAT Agent 提供了便捷的命令行工具来管理服务。
# 查看帮助
agimat --help
# 启动后端服务器
agimat server
# 启动前端UI
agimat ui
# 打开配置目录
agimat config
# 使用默认配置启动服务器
agimat server
# 指定端口启动
agimat server --port 9000
# 指定主机地址
agimat server --host 0.0.0.0 --port 8000
# 使用自定义配置文件
agimat server --config /path/to/custom/config.yaml
# 使用默认端口启动UI
agimat ui
# 指定UI端口
agimat ui --port 8502
# 使用自定义配置文件
agimat ui --config /path/to/custom/config.yaml
# 打开配置目录(使用系统默认方式)
agimat config
# 使用VS Code打开配置目录
agimat config --editor code
# 使用vim打开配置目录
agimat config --editor vim
# 使用nano打开配置目录
agimat config --editor nano
AGI-MAT Agent 会自动在 ~/.agimat/ 目录下创建配置文件:
~/.agimat/conf.yaml)包含 AGI-MAT Agent 的基本配置,如服务器地址、模型参数等。
~/.agimat/env)包含各种API密钥和服务器配置,如:
~/.agimat/mcp.json)包含MCP服务器的配置信息,支持各种外部工具集成。
~/.agimat/conf.yamlconf.yaml首次运行 agimat 命令时,系统会自动:
~/.agimat/ 配置目录Q: 配置文件在哪里?
A: 默认位置是 ~/.agimat/ 目录,使用 agimat config 命令可以快速打开。
Q: 如何修改API密钥?
A: 编辑 ~/.agimat/env 文件,或者使用 agimat config --editor code 打开配置目录。
Q: 端口被占用怎么办?
A: 使用 --port 参数指定其他端口,例如:agimat server --port 9000
Q: 如何查看日志?
A: 在 ~/.agimat/env 文件中设置 LOG_LEVEL=DEBUG 查看详细日志。
使用CLI工具快速配置:
# 打开配置目录
agimat config
# 或者使用VS Code编辑配置
agimat config --editor code
编辑 ~/.agimat/env 文件,配置你的API密钥:
# OpenAI API 配置
OPENAI_API_KEY=your_openai_api_key_here
# Google AI 配置
GOOGLE_API_KEY=your_google_api_key_here
# Anthropic 配置
ANTHROPIC_API_KEY=your_anthropic_api_key_here
使用CLI工具启动服务:
# 启动后端服务器
agimat server
# 启动前端UI
agimat ui
# 或者同时启动两个服务(在不同终端)
agimat server --port 8000
agimat ui --port 8501
服务将在 http://localhost:8000 启动,UI在 http://localhost:8501。
# 基础对话
curl -X POST "http://localhost:8000/api/v1/agents/invoke" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "agent_test",
"query": "你好,请介绍一下你自己",
"task_id": "test-task-1"
}'
# SSE流式响应
curl -X POST "http://localhost:8000/api/v1/agents/stream" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "agent_test",
"query": "写一首关于AI的诗",
"task_id": "stream-task-1"
}'
const ws = new WebSocket('ws://localhost:8000/api/v1/agents/ws');
ws.onopen = () => {
ws.send(JSON.stringify({
agent_name: "agent_test",
query: "解释一下量子计算的原理",
task_id: "ws-task-1"
}));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log(data);
};
运行模型配置测试:
# 完整测试
python test_models.py
# 快速测试
python test_models.py --quick
agimat-agent/
├── api/ # API路由层
│ └── agent.py # Agent API端点
├── core/ # 核心业务逻辑
│ ├── apps/
│ │ ├── agents/ # Agent实现
│ │ ├── mcp/ # MCP工具集成
│ │ ├── tools/ # 本地工具
│ │ └── builder/ # Agent构建器
│ └── models/ # 数据模型
├── lib/ # 通用库
│ ├── llm_provider.py # 多模型支持
│ └── config.py # 配置管理
├── conf.yaml # 主配置文件
├── main.py # 应用入口
└── requirements.txt # 依赖包
使用CLI工具启动UI:
# 使用默认端口启动UI
agimat ui
# 指定端口启动UI
agimat ui --port 8501
# 使用uv直接启动(如果需要)
uv run streamlit run ui/ui.py --server.port 8501
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
aiofilesEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | aiofiles | runtime |
aiohttpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | aiohttp | runtime |
buildEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | build>=1.2.2.post1 | runtime |
email-validatorEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | email-validator | runtime |
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | fastapi | runtime |
fastmcpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | fastmcp | runtime |
google-generativeaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | google-generativeai | runtime |
jinja2Environment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | jinja2 | runtime |
langchainEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain | runtime |
langchain-anthropicEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-anthropic | runtime |
langchain-communityEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-community | runtime |
langchain-coreEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-core | runtime |
langchain-experimentalEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-experimental | runtime |
langchain-google-genaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-google-genai | runtime |
langchain-mcp-adaptersEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-mcp-adapters | runtime |
langchain-openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-openai | runtime |
langchain-tavilyEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langchain-tavily | runtime |
langgraphEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langgraph | runtime |
langsmithEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | langsmith | runtime |
mcpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | mcp | runtime |
motorEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | motor | runtime |
openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | openai | runtime |
passlibEnvironment{
"extras": "bcrypt",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | passlib[bcrypt] | runtime |
psutilEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | psutil | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | pydantic | runtime |
pydantic-settingsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | pydantic-settings | runtime |
python-dateutilEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | python-dateutil | runtime |
python-dotenvEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | python-dotenv | runtime |
python-joseEnvironment{
"extras": "cryptography",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | python-jose[cryptography] | runtime |
python-multipartEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | python-multipart | runtime |
pytzEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | pytz | runtime |
pyyamlEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | pyyaml | runtime |
requestsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | requests | runtime |
streamlitEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | streamlit>=1.28.0 | runtime |
tenacityEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | tenacity | runtime |
twineEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | twine>=6.1.0 | runtime |
uvicornEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | uvicorn | runtime |
wavespeed-mcpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | wavespeed-mcp>=0.1.6 | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | black>=24.1.1; extra == "dev" | runtime |
flake8Environment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | flake8>=7.0.0; extra == "dev" | runtime |
httpxEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27; extra == "dev" | runtime |
isortEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | isort>=5.13.2; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.8.0; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23.5; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.12",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0.0; extra == "dev" | runtime |
bdist_wheel · 62.67 KB · Python py3
sdist · 39.37 KB · Python source
Shared repository data · GitHub
Observed since 21 Oct, 09:08 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:f172e4e10a3d4b8fd9224cde66be77bcdc4ce7b94f1981d0e33f7b219f84b3cd