一个通用、框架无关的 LangChain Agent 封装库,支持跨项目无缝移植。
✨ 框架无关 - Django / Flask / FastAPI / 纯Python脚本都能用
🚀 逐 token 流式 - 真正的 token 级别流式输出,极致响应体验
⚡ 全异步支持 - 原生支持 asyncio,完美契合 FastAPI
🔌 插件化设计 - LLM适配器、配置、工具都可插拔
📦 零移植成本 - 配置和工具定义直接复制
🎯 类型安全 - 完整的类型注解
pip install langchain-agent-protocolfrom langchain_agent_protocol import UniversalAgent
# 一行代码创建 Agent
agent = UniversalAgent.quick_start(
api_key="sk-xxx",
model="gpt-4",
system_prompt="你是一个智能助手"
)
# 使用
response = agent.run("你好")
print(response)
# 流式输出
for chunk in agent.run_stream("介绍一下自己"):
print(chunk, end="", flush=True)from langchain_agent_protocol import UniversalAgent, AgentConfig
from langchain_agent_protocol.adapters import OpenAIAdapter
from langchain_core.tools import tool
# 1. 定义工具
@tool
def get_weather(city: str) -> str:
"""获取天气信息"""
return f"{city} 的天气是晴天"
@tool
def search_web(query: str) -> str:
"""搜索网页"""
return f"搜索结果: {query}"
# 2. 配置
config = AgentConfig(
system_prompt="你是一个智能助手,可以查天气和搜索",
tool_name_map={
"get_weather": "天气查询",
"search_web": "网页搜索"
},
temperature=0.7
)
# 3. 创建适配器
llm_adapter = OpenAIAdapter(
api_key="your-api-key",
model="gpt-4"
)
# 4. 初始化 Agent
agent = UniversalAgent(
llm_adapter=llm_adapter,
tools=[get_weather, search_web],
config=config
)
# 5. 使用
response = agent.run("北京今天天气怎么样?")
print(response)# config.yaml
system_prompt: |
你是一个专业的AI助手
tool_name_map:
search_db: "数据库搜索"
send_email: "发送邮件"
temperature: 0.7
max_tokens: 2000from langchain_agent_protocol import AgentConfig
config = AgentConfig.from_yaml('config.yaml')export AGENT_SYSTEM_PROMPT="你是助手"
export AGENT_TEMPERATURE="0.7"config = AgentConfig.from_env()# myapp/ai_service.py
from langchain_agent_protocol import UniversalAgent, AgentConfig
from langchain_agent_protocol.adapters import OpenAIAdapter
from .tools import business_tools
# 使用 Django settings
from django.conf import settings
agent = UniversalAgent(
llm_adapter=OpenAIAdapter(api_key=settings.OPENAI_API_KEY),
tools=business_tools,
config=AgentConfig.from_yaml('config/agent_config.yaml')
)
# views.py
from django.http import JsonResponse
from .ai_service import agent
def chat_api(request):
message = request.POST.get('message')
response = agent.run(message)
return JsonResponse({'response': response})from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from langchain_agent_protocol import UniversalAgent
from langchain_agent_protocol.adapters import OpenAIAdapter
app = FastAPI()
# 初始化
agent = UniversalAgent.quick_start(
api_key="sk-xxx",
tools=my_tools,
system_prompt="你是助手"
)
@app.post("/chat")
async def chat(message: str):
result = agent.run(message)
return {"response": result}
@app.get("/chat/stream")
async def chat_stream(message: str):
# 使用异步流式接口,实现逐字输出
return StreamingResponse(
agent.run_stream_async(message),
media_type="text/plain"
)from langchain_agent_protocol.core import BaseLLMAdapter
class MyCustomAdapter(BaseLLMAdapter):
def __init__(self, my_service):
self.service = my_service
def chat(self, messages, tools=None, **kwargs):
# 调用你的自定义服务
return self.service.call(messages, tools)
def chat_stream(self, messages, tools=None, **kwargs):
# 流式调用
for chunk in self.service.stream(messages, tools):
yield chunk
# 使用
agent = UniversalAgent(
llm_adapter=MyCustomAdapter(your_service),
tools=tools,
config=config
)创建 Agent 实例
同步执行。
同步流式执行 (同步生成器),适用于 Django/Flask 等环境实现逐字输出。
异步流式执行 (异步生成器),适用于 FastAPI/Websocket 等异步环境。
快速创建 Agent 的便捷类方法。
from_dict(config_dict)- 从字典from_yaml(yaml_path)- 从 YAML 文件from_json(json_path)- 从 JSON 文件from_env(prefix)- 从环境变量
# 旧项目
old_config = {
'system_prompt': '...',
'tool_name_map': {...}
}
# 保存
config = AgentConfig.from_dict(old_config)
config.to_yaml('agent_config.yaml')工具定义直接复制,无需修改:
# tools.py - 直接复制
from langchain_core.tools import tool
@tool
def my_tool(param: str) -> str:
return "result"from langchain_agent_protocol import UniversalAgent
from langchain_agent_protocol.adapters import OpenAIAdapter
from .tools import my_tools # 直接导入
agent = UniversalAgent(
llm_adapter=OpenAIAdapter.from_env(),
tools=my_tools,
config=AgentConfig.from_yaml('agent_config.yaml')
)# 克隆项目
git clone https://github.com/SunshineList/langchain-agent-protocol
cd langchain-agent-protocol
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 代码格式化
black .
isort .MIT License
欢迎 PR 和 Issues!