LLMCompiler 是一种 Agent 架构,旨在通过在DAG中快速执行任务来加快 Agent 任务的执行速度。它还通过减少对 LLM 的调用次数来节省 Tokens 使用的成本。实现 灵感来自《An LLM Compiler for Parallel Function Calling》。
这里以使用 SQL 查询数据为例,介绍该框架的核心作用。生成 SQL 执行计划的核心流程包括语法解析、语义分析、优化器介入、生成执行计划。LLMCompiler 基于用户指令执行工具调用时其实可以理解为 LLM 帮用户做了类似 SQL 生成执行计划的过程,只不过这里生成的计划是一个 DAG,DAG描述了工具之间的调用关系和参数依赖传递逻辑。
当 Agent 需要调用大量工具时,此实现非常有用。如果您需要的工具超过 LLM 的上下文限制,您可以基于此工具扩展代理节点。将工具分为不同的 代理并组装它们以创建更强大的 LLMCompiler。另外已经有案例是在生产级应用中得到验证的,这个案例中配置了大约 60 种工具,与 Few-shot 搭配时准确率超过 90%。
LLMCompiler Frame Diagram
Task Fetching Unit
# https://github.com/crazyyanchao/llmcompiler
# 如果您对这个项目感兴趣别忘了点个`star`:)
pip install llmcompiler
from llmcompiler.result.chat importChatRequest
from llmcompiler.tools.tools importDefineTools
from langchain_openai.chat_models.base importChatOpenAI
from llmcompiler.chat.run importRunLLMCompiler
chat =ChatRequest(message="<YOUR_MESSAGE>")
# tools 是基于 Langchain BaseTool 的列表。
# 默认配置仅用于演示,建议继承BaseTool来实现Tool,这样可以更好地控制一些细节。
# 对于多参数依赖,可以继承 DAGFlowParams,实现参考为`llmcompiler/tools/basetool/fund_basic.py`。
tools =DefineTools().tools()
# 支持BaseLanguageModel的实现类。
llm =ChatOpenAI(model="gpt-4o", temperature=0, max_retries=3)
llm_compiler =RunLLMCompiler(chat, tools, llm)
result = llm_compiler()
print(result)
# 更多使用方式可以在`issue`中讨论,后续还会继续完善文档。
[1]
TOC: 开源:LLMCompiler高性能工具调用框架
[2]
论文: An LLM Compiler for Parallel Function Calling: https://arxiv.org/abs/2312.04511
[3]
部分参考代码: LLMCompiler From Github: https://github.com/langchain-ai/langgraph/blob/main/examples/llm-compiler/LLMCompiler.ipynb