FastAPI 应用用于通过具有 REST API 接口的 FastAPI 服务器来托管代理或团队。

示例用法

创建代理,用 FastAPIApp 进行封装,然后进行托管:

from agno.agent import Agent
from agno.app.fastapi.app import FastAPIApp
from agno.models.openai import OpenAIChat

basic_agent = Agent(
    name="Basic Agent",
    model=OpenAIChat(id="gpt-4o"), # 确保设置了 OPENAI_API_KEY
    add_history_to_messages=True,
    num_history_responses=3,
    add_datetime_to_instructions=True,
    markdown=True,
)

# 默认异步路由 (use_async=True)
fastapi_app = FastAPIApp(
    agent=basic_agent,
    name="Basic Agent",
    app_id="basic_agent",
    description="一个基础代理,可以回答问题并协助处理任务。",
)

app = fastapi_app.get_app()

# 对于同步路由:
# app = fastapi_app.get_app(use_async=False)

if __name__ == "__main__":
    fastapi_app.serve(app="basic:app", port=8001, reload=True)

运行方法:

  1. 设置 OPENAI_API_KEY 环境变量。
  2. API 地址为 http://localhost:8001,文档地址为 http://localhost:8001/docs

POST 请求发送到 http://localhost:8001/v1/run

{
  "message": "你好 Basic Agent,给我讲个有趣的冷知识!",
  "stream": false
}

核心组件

  • FastAPIApp: 用于封装 Agno 代理/团队以用于 FastAPI。
  • FastAPIApp.serve: 使用 Uvicorn 托管 FastAPI 应用。

FastAPIApp 使用辅助函数进行路由处理。

FastAPIApp

Agno FastAPI 应用的主入口点。

初始化参数

参数类型默认值描述
agentsOptional[List[Agent]]NoneAgno Agent 实例列表。
teamsOptional[List[Team]]NoneAgno Team 实例列表。
workflowsOptional[List[Team]]NoneAgno Workflow 实例列表。
settingsOptional[APIAppSettings]NoneAPI 配置。如果为 None 则使用默认值。
api_appOptional[FastAPI]None现有的 FastAPI 应用。如果为 None 则创建新的。
routerOptional[APIRouter]None现有的 APIRouter。如果为 None 则创建新的。
app_idOptional[str]None应用标识符(如果未设置则自动生成)。
nameOptional[str]None应用名称。
descriptionOptional[str]None应用描述。

请提供 agentteam,不要同时提供两者。

关键方法

方法参数返回类型描述
get_appuse_async: bool = True
prefix: str = "/v1"
FastAPI返回配置好的 FastAPI 应用(默认异步)。设置前缀、错误处理器、CORS 和文档。

端点

端点可在指定的前缀(默认为 /v1)下访问。

1. POST /run

  • 描述: 与代理/团队进行交互(使用 agent.run()/arun()team.run()/arun())。
  • 请求表单参数:
    参数类型默认值描述
    messagestr...输入消息(必需)。
    streamboolTrue (同步), False (异步默认)流式响应。
    monitorboolFalse启用监控。
    session_idOptional[str]None用于会话连续性的会话 ID。
    user_idOptional[str]None用户 ID。
    filesOptional[List[UploadFile]]None要上传的文件。
  • 响应:
    • stream=True: StreamingResponse (text/event-stream),包含 JSON RunResponse/TeamRunResponse 事件。
    • stream=False: JSON RunResponse/TeamRunResponse 字典。

参数

参数类型默认值描述
appUnion[str, FastAPI]N/AFastAPI 应用实例或导入字符串(必需)。
hoststr"localhost"要绑定的主机。
portint7777要绑定的端口。
reloadboolFalse为开发启用自动重载。