使用 LiteLLM 实现结构化输出,包含 Instructor 的完整指南¶
LiteLLM 为多个大型语言模型(LLM)提供商提供统一接口,使得在不同模型和提供商之间切换变得容易。本指南将向您展示如何将 Instructor 与 LiteLLM 结合使用,以在各种 LLM 提供商之间实现类型安全、经过验证的响应。
快速入门¶
安装支持 LiteLLM 的 Instructor
简单用户示例 (同步)¶
from litellm import completion
import instructor
from pydantic import BaseModel
# Enable instructor patches
client = instructor.from_litellm(completion)
class User(BaseModel):
name: str
age: int
# Create structured output
user = client.chat.completions.create(
model="gpt-3.5-turbo", # Can use any supported model
messages=[
{"role": "user", "content": "Extract: Jason is 25 years old"},
],
response_model=User,
)
print(user) # User(name='Jason', age=25)
简单用户示例 (异步)¶
from litellm import acompletion
import instructor
from pydantic import BaseModel
import asyncio
# Enable instructor patches for async
client = instructor.from_litellm(acompletion)
class User(BaseModel):
name: str
age: int
async def extract_user():
user = await client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Extract: Jason is 25 years old"},
],
response_model=User,
)
return user
# Run async function
user = asyncio.run(extract_user())
print(user) # User(name='Jason', age=25)
成本计算¶
为了计算响应成本,LiteLLM 在响应对象的 `_hidden_params` 属性上提供了一个简单的 `response_cost` 属性。这在他们的文档 此处 有记录。
以下是使用 instructor 计算响应成本的代码片段
import instructor
from litellm import completion
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
client = instructor.from_litellm(completion)
instructor_resp, raw_completion = client.chat.completions.create_with_completion(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Extract Jason is 25 years old.",
}
],
response_model=User,
)
print(raw_completion._hidden_params["response_cost"])
#> 0.00189
相关资源¶
更新与兼容性¶
Instructor 保持与 LiteLLM 最新版本的兼容性。请查看 变更日志 获取更新信息。
注意:在实现之前,请务必查阅各提供商的文档,核实其特定功能和限制。