Skip to main content
Open In ColabOpen on GitHub

[已弃用] 实验性Anthropic工具封装

warning

Anthropic API 正式支持工具调用,因此不再需要此解决方法。请使用 ChatAnthropiclangchain-anthropic>=0.1.15

本笔记本展示了如何使用一个实验性的包装器,该包装器为Anthropic提供了工具调用和结构化输出功能。它遵循Anthropic的指南这里

包装器可以从langchain-anthropic包中获得,并且还需要可选的依赖项defusedxml来解析来自llm的XML输出。

注意:这是一个测试版功能,将被Anthropic的正式工具调用实现所取代,但在目前对测试和实验非常有用。

%pip install -qU langchain-anthropic defusedxml
from langchain_anthropic.experimental import ChatAnthropicTools
API Reference: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)

这个页面有帮助吗?