[已弃用] 实验性 Anthropic 工具封装器
警告
The Anthropic API 正式支持工具调用,因此此工作程序不再需要。请使用 ChatAnthropic 与 langchain-anthropic>=0.1.15。
这个笔记本展示了如何使用一个实验性的围绕Anthropic的包装器,使其具备工具调用和结构化输出的能力。它遵循了Anthropic的指南这里。
来自langchain-anthropic包,同时也需要可选依赖项defusedxml来解析llm输出的XML内容。
注:这是一个beta功能,将在Anthropic的正式工具调用实现取代,但在Meanwhile,它对于测试和实验是有用的。
%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)