Skip to main content

指导员 - 函数调用

在生产环境中使用LiteLLM路由器与jxnl的指导员库进行函数调用。

使用方法

import litellm
from litellm import Router
import instructor
from pydantic import BaseModel

litellm.set_verbose = True # 👈 打印DEBUG日志

client = instructor.patch(
Router(
model_list=[
{
"model_name": "gpt-3.5-turbo", # 开放AI模型名称
"litellm_params": { # litellm完成/嵌入调用的参数 - 例如:https://github.com/BerriAI/litellm/blob/62a591f90c99120e1a51a8445f5c3752586868ea/litellm/router.py#L111
"model": "azure/chatgpt-v-2",
"api_key": os.getenv("AZURE_API_KEY"),
"api_version": os.getenv("AZURE_API_VERSION"),
"api_base": os.getenv("AZURE_API_BASE"),
},
}
]
)
)


class UserDetail(BaseModel):
name: str
age: int


user = client.chat.completions.create(
model="gpt-3.5-turbo",
response_model=UserDetail,
messages=[
{"role": "user", "content": "提取Jason今年25岁"},
],
)

assert isinstance(user, UserDetail)
assert user.name == "Jason"
assert user.age == 25

print(f"用户: {user}")

异步调用

import litellm
from litellm import Router
import instructor, asyncio
from pydantic import BaseModel

aclient = instructor.apatch(
Router(
model_list=[
{
"model_name": "gpt-3.5-turbo",
"litellm_params": {
"model": "azure/chatgpt-v-2",
"api_key": os.getenv("AZURE_API_KEY"),
"api_version": os.getenv("AZURE_API_VERSION"),
"api_base": os.getenv("AZURE_API_BASE"),
},
}
],
default_litellm_params={"acompletion": True}, # 👈 重要 - 告诉litellm路由到异步完成函数。
)
)


class UserExtract(BaseModel):
name: str
age: int


async def main():
model = await aclient.chat.completions.create(
model="gpt-3.5-turbo",
response_model=UserExtract,
messages=[
{"role": "user", "content": "提取Jason今年25岁"},
],
)
print(f"模型: {model}")


asyncio.run(main())