跳到内容

anthropic

将 Anthropic 的网页搜索与 Instructor 结合使用以获取实时数据

Anthropic 新推出的网页搜索工具与 Instructor 结合使用时,提供了一种从网络获取实时、结构化数据的强大方式。这使得您能够构建可以回答问题和提供最新信息的应用程序,从而超越大型语言模型的知识截止日期。

在这篇文章中,我们将探讨如何使用 web_search 工具结合 Instructor 来获取最新信息,并将其结构化为 Pydantic 模型。即使是简单的结构也能非常有效地提高清晰度并便于进一步处理。

Anthropic 的结构化输出和提示缓存

Anthropic 的生态系统现在为 AI 开发者提供了两个强大的功能:结构化输出和提示缓存。这些进步使得大型语言模型 (LLMs) 的使用更加高效。本指南演示了如何利用 Instructor 库来利用这些功能增强您的 AI 应用程序。

使用 Anthropic 和 Instructor 实现结构化输出

Instructor 现在提供了与 Anthropic 强大语言模型的无缝集成,使开发者能够轻松使用 Pydantic 模型创建结构化输出。这种集成简化了从 AI 生成的响应中提取特定信息的流程。

我为什么要使用提示缓存?

开发者在使用大型上下文时经常面临两个主要挑战——响应时间慢和成本高。当我们需要在一段时间内进行多次此类调用时,情况尤其如此,这会严重影响我们应用程序的成本和延迟。借助 Anthropic 新推出的提示缓存功能,我们可以轻松解决这两个问题。

由于这项新功能仍处于测试阶段,我们将等待其正式发布后再将其集成到 instructor 中。在此期间,我们整理了一份快速入门指南,说明如何在您自己的应用程序中使用此功能。

使用 Anthropic 实现结构化输出

特别感谢 Shreya 为 anthropic 支持做出的贡献。目前,除流式传输支持外,所有功能均已可运行。

对于那些渴望尝试的用户,只需使用 ANTHROPIC_JSON 修补客户端,这将使您能够利用 anthropic 客户端发送请求。

pip install instructor[anthropic]

缺失的功能

谨此告知,我们知悉目前缺少部分流式传输以及对 XML 的更好重问支持。我们正在努力开发,很快就会推出。

from pydantic import BaseModel
from typing import List
import anthropic
import instructor

# Patching the Anthropics client with the instructor for enhanced capabilities
anthropic_client = instructor.from_openai(
    create=anthropic.Anthropic().messages.create,
    mode=instructor.Mode.ANTHROPIC_JSON
)

class Properties(BaseModel):
    name: str
    value: str

class User(BaseModel):
    name: str
    age: int
    properties: List[Properties]

user_response = anthropic_client(
    model="claude-3-haiku-20240307",
    max_tokens=1024,
    max_retries=0,
    messages=[
        {
            "role": "user",
            "content": "Create a user for a model with a name, age, and properties.",
        }
    ],
    response_model=User,
)  # type: ignore

print(user_response.model_dump_json(indent=2))
"""
{
    "name": "John",
    "age": 25,
    "properties": [
        {
            "key": "favorite_color",
            "value": "blue"
        }
    ]
}

我们在处理深度嵌套类型时遇到了挑战,热切邀请社区进行测试、提供反馈并提出必要的改进建议,以便我们增强 anthropic 客户端的支持。