Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Anthropic SDK 提供了一个 "middleware"(中间件,或称拦截器)钩子,让您可以在请求发送之前和收到响应之后运行代码。中间件可用于处理横切关注点,例如日志记录、自定义重试、请求注解以及拒绝回退处理。
每个中间件都可以在调用 next() 之前检查或替换请求,并在 next() 返回后检查或替换响应。
每个中间件都是一个函数,接收传出的请求和一个 next 可调用对象。调用 next 将请求转发到链中的其余部分(如果这是最后一个中间件,则直接转发到 SDK 核心),并返回其响应。next 调用之前的任何代码在请求发出时运行;之后的任何代码在响应返回时运行。
def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
# 请求之前
print(f"-> {request.method} {request.url}")
# 将请求转发到链中的其余部分
response = call_next(request)
# 请求之后
print(f"<- {response.status_code}")
return response
client = Anthropic(middleware=[logging_middleware])当您注册多个中间件时,它们按给定的顺序应用:第一个中间件的"前置"代码最先运行,其"后置"代码最后运行。在客户端上注册的中间件会先于作为每请求选项传入的中间件运行。
在 Go SDK 中,重复的 option.WithMiddleware 调用会进行拼接(先客户端,后方法)。在其他 SDK 中,传入一个数组;后面的条目包裹在内层。
每个 SDK 还接受自定义 HTTP 客户端(用于代理配置、自定义 TLS 或连接池)。每个 SDK 客户端只使用一个 HTTP 客户端;设置它会替换默认客户端。自定义 HTTP 客户端会在所有中间件运行完毕后接收请求。
SDK 附带了一个拒绝回退中间件,可在 Claude Fable 5 拒绝请求时自动使用回退模型重试。有关设置和各语言示例,请参阅检测并使用回退模型重试。
Was this page helpful?