--- title: 集成指南 description: DeerFlow Harness 不仅仅是一个独立应用程序——它是一个可以导入并在你自己的后端、API 服务器、自动化系统或多 Agent 协调器中使用的 Python 库。 --- import { Callout, Cards } from "nextra/components"; # 集成指南 DeerFlow Harness 可以嵌入任何 Python 应用程序。本指南涵盖在你自己的系统中将 DeerFlow 作为库使用的集成模式。 DeerFlow Harness 不仅仅是一个独立应用程序——它是一个可以导入并在你自己的后端、API 服务器、自动化系统或多 Agent 协调器中使用的 Python 库。 ## 嵌入 DeerFlowClient 主要集成点是 `DeerFlowClient`。它封装了 LangGraph 运行时,并提供一个简洁的 API,用于在任何 Python 应用中发送消息和流式传输响应。 ```python from deerflow.client import DeerFlowClient from deerflow.config import load_config # 加载配置(读取 config.yaml 或 DEER_FLOW_CONFIG_PATH) load_config() client = DeerFlowClient() ``` 客户端是线程安全的,设计为实例化一次并在请求之间复用。 ## 异步流式传输 推荐的集成模式是异步流式传输。这让你可以在 Agent 生成响应时实时访问每个 token 和事件: ```python import asyncio async def run_agent(thread_id: str, user_message: str): async for event in client.astream( thread_id=thread_id, message=user_message, config={ "configurable": { "model_name": "gpt-4o", "subagent_enabled": True, } }, ): # 处理每个流式事件 yield event # 在 FastAPI 处理器中: # from fastapi.responses import StreamingResponse # return StreamingResponse(run_agent(thread_id, message), media_type="text/event-stream") ``` ## 非流式调用 对于批处理或只需要最终结果的场景: ```python async def run_agent_sync(thread_id: str, user_message: str) -> dict: result = await client.ainvoke( thread_id=thread_id, message=user_message, ) return result ``` ## 线程管理 线程表示持久化对话。使用唯一线程 ID 隔离不同用户会话: ```python import uuid # 新对话 thread_id = str(uuid.uuid4()) # 继续已有对话(相同 thread_id) # 如果配置了检查点,Agent 将看到完整历史 await client.ainvoke(thread_id=existing_thread_id, message="后续问题") ``` ## 自定义 Agent 配置 通过创建命名 Agent 配置并在运行时传入 `agent_name` 来构建领域特定 Agent: ```python # agents/research-assistant/config.yaml 必须存在并包含技能和工具配置 result = await client.ainvoke( thread_id=thread_id, message=user_message, config={ "configurable": { "agent_name": "research-assistant", "model_name": "gpt-4o", } }, ) ``` ## 与 FastAPI 集成 DeerFlow Gateway 本身是一个 FastAPI 应用程序。你可以将其作为子应用程序挂载: ```python from fastapi import FastAPI from deerflow.config import load_config load_config() app = FastAPI() # 挂载 DeerFlow Gateway from deerflow.app.gateway.main import app as gateway_app app.mount("/deerflow", gateway_app) ``` 或者在你自己的 FastAPI 路由中直接使用 `DeerFlowClient` 进行流式传输: ```python from fastapi import FastAPI from fastapi.responses import StreamingResponse from deerflow.client import DeerFlowClient app = FastAPI() client = DeerFlowClient() @app.post("/chat/{thread_id}") async def chat(thread_id: str, body: dict): async def generate(): async for event in client.astream(thread_id=thread_id, message=body["message"]): yield f"data: {event}\n\n" return StreamingResponse(generate(), media_type="text/event-stream") ``` ## 嵌入模式下的配置 当嵌入到另一个应用程序时,显式设置配置路径以避免歧义: ```python import os os.environ["DEER_FLOW_CONFIG_PATH"] = "/path/to/my-deerflow-config.yaml" from deerflow.config import load_config load_config() ``` 或直接传递路径: ```python from deerflow.config import load_config load_config(config_path="/path/to/my-deerflow-config.yaml") ```