[已弃用] 实验性Anthropic工具包装器
warning
Anthropic API正式支持工具调用,因此不再需要此变通方法。请使用ChatAnthropic与langchain-anthropic>=0.1.15
。
本笔记本展示了如何使用一个实验性包装器,该包装器为Anthropic提供了工具调用和结构化输出的能力。它遵循Anthropic的指南这里
该包装器可从langchain-anthropic
包中获得,并且还需要可选依赖项defusedxml
来解析llm的XML输出。
注意:这是一个测试版功能,将被Anthropic正式实现的工具调用所替代,但在此期间对于测试和实验是有用的。
<!--IMPORTS:[{"imported": "ChatAnthropicTools", "source": "langchain_anthropic.experimental", "docs": "https://python.langchain.com/api_reference/anthropic/experimental/langchain_anthropic.experimental.ChatAnthropicTools.html", "title": "[Deprecated] Experimental Anthropic Tools Wrapper"}]-->
%pip install -qU langchain-anthropic defusedxml
from langchain_anthropic.experimental import ChatAnthropicTools
工具绑定
ChatAnthropicTools
提供了一个 bind_tools
方法,允许您将 Pydantic 模型或 BaseTools 传递给 llm。
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)