[已弃用] 实验性 Anthropic 工具封装器
警告
Anthropic API 已正式支持工具调用,因此不再需要此变通方法。请使用 ChatAnthropic,并确保 `langchain-anthropic>=0.1.15`。
本教程展示了如何使用一个实验性封装器来与 Anthropic 交互,该封装器赋予了它工具调用和结构化输出的能力。它遵循 Anthropic 的指南。
该封装器可通过 `langchain-anthropic` 包获取,并且它还需要可选依赖 `defusedxml` 来解析来自大语言模型的 XML 输出。
注意:这是一个测试版功能,最终将被 Anthropic 的工具调用正式实现所取代,但在此期间,它对测试和实验很有用。
%pip install -qU langchain-anthropic defusedxml
from langchain_anthropic.experimental import ChatAnthropicTools
API 参考:ChatAnthropicTools
工具绑定
`ChatAnthropicTools` 暴露了一个 `bind_tools` 方法,允许您将 Pydantic 模型或 BaseTools 传递给大语言模型。
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
model = ChatAnthropicTools(model="claude-3-opus-20240229").bind_tools(tools=[Person])
model.invoke("I am a 27 year old named Erick")
AIMessage(content='', additional_kwargs={'tool_calls': [{'function': {'name': 'Person', 'arguments': '{"name": "Erick", "age": "27"}'}, 'type': 'function'}]})
结构化输出
`ChatAnthropicTools` 还实现了 `with_structured_output` 规范以提取值。注意:这可能不如那些明确提供工具调用的模型稳定。
chain = ChatAnthropicTools(model="claude-3-opus-20240229").with_structured_output(
Person
)
chain.invoke("I am a 27 year old named Erick")
Person(name='Erick', age=27)