Langroid:强大的多智能体编程框架 - LLM应用开发利器
Langroid是一个革命性的Python框架,专为构建基于大型语言模型(LLM)的应用而设计。它采用了独特的多智能体编程范式,大大简化了LLM应用的开发过程。无论您是想开发简单的聊天机器人,还是复杂的问答系统,Langroid都能为您提供强大而灵活的工具。
🌟 主要特点
-
智能体为中心的设计: Langroid将智能体(Agent)作为核心抽象,每个智能体都可以封装LLM对话状态、向量存储和工具。
-
任务编排: 通过Task类包装智能体,管理智能体的响应方法,并通过分层递归的任务委派来协调多个智能体的交互。
-
模块化与松耦合: Agent和Task抽象允许用户设计具有特定技能的智能体,并以灵活的方式组合任务。
-
广泛的LLM支持: 不仅支持OpenAI的模型,还支持数百种本地/开源和远程/商业LLM。
-
缓存机制: 使用Redis或Momento缓存LLM响应,提高效率。
-
向量存储: 支持LanceDB、Qdrant和Chroma等向量数据库,实现检索增强生成(RAG)。
-
工具/插件机制: 支持OpenAI的函数调用,以及适用于任何LLM的ToolMessage机制。
🚀 快速上手
- 安装Langroid:
pip install "langroid[all]"
- 设置环境变量:
在项目根目录创建.env
文件,添加您的OpenAI API密钥:
OPENAI_API_KEY=your-key-here-without-quotes
- 基本用法示例:
import langroid as lr
import langroid.language_models as lm
# 设置LLM
llm_cfg = lm.OpenAIGPTConfig(chat_model=lm.OpenAIChatModel.GPT4_TURBO)
mdl = lm.OpenAIGPT(llm_cfg)
# 直接使用LLM
response = mdl.chat("What is the capital of France?", max_tokens=10)
# 使用智能体
agent_cfg = lr.ChatAgentConfig(llm=llm_cfg)
agent = lr.ChatAgent(agent_cfg)
agent.llm_response("What is the capital of China?")
response = agent.llm_response("And India?") # 保持对话状态
# 使用Task包装智能体
task = lr.Task(agent, name="Bot", system_message="You are a helpful assistant")
task.run("Hello") # 启动与用户的交互循环
🛠️ 高级功能
- 多智能体协作: Langroid允许您轻松创建多个智能体并让它们协同工作。例如,您可以创建一个教师智能体和一个学生智能体:
teacher_agent = lr.ChatAgent(agent_cfg)
teacher_task = lr.Task(
teacher_agent, name="Teacher",
system_message="Ask your student concise numbers questions, and give feedback."
)
student_agent = lr.ChatAgent(agent_cfg)
student_task = lr.Task(
student_agent, name="Student",
system_message="Concisely answer the teacher's questions.",
single_round=True,
)
teacher_task.add_sub_task(student_task)
teacher_task.run()
- 文档问答(RAG): Langroid的
DocChatAgent
支持基于文档的问答:
from langroid.agent.special.doc_chat_agent import DocChatAgent, DocChatAgentConfig
rag_agent_config = DocChatAgentConfig(
llm=llm_cfg,
doc_paths=["/path/to/my/docs"], # 文件、文件夹或URL
)
rag_agent = DocChatAgent(rag_agent_config)
rag_task = lr.Task(rag_agent, name="RAG")
rag_task.run()
- SQL数据库交互:
SQLChatAgent
允许您与SQL数据库进行自然语言交互:
from langroid.agent.special.sql.sql_chat_agent import SQLChatAgent, SQLChatAgentConfig
sql_agent_config = SQLChatAgentConfig(
llm=llm_cfg,
db_url="postgresql://user:password@localhost:5432/mydatabase"
)
sql_agent = SQLChatAgent(sql_agent_config)
sql_task = lr.Task(sql_agent, name="SQLChat")
sql_task.run()
🌐 社区与资源
- 文档: 详细的官方文档提供了更多示例和教程。
- 示例仓库: langroid-examples包含了各种实用示例。
- Discord社区: 加入Langroid Discord与其他开发者交流。
- 贡献: Langroid欢迎社区贡献,查看贡献指南了解如何参与。
通过Langroid,您可以快速构建从简单聊天机器人到复杂的多智能体系统的各种LLM应用。其直观的API和灵活的架构让LLM应用开发变得前所未有的简单和有趣。无论您是AI研究人员、软件工程师还是企业开发者,Langroid都能为您的项目提供强大的支持。立即开始使用Langroid,探索LLM应用开发的无限可能!