搞了大半年AI应用开发相关,后知后觉一些细节问题……
Q & A
我们调用LLM API时,URL,也就是调用的端点设置至关重要。但在同一个模型服务中,你可能会看到:
- Python示例:base_url = …/v1
- curl示例:base_url = …/v1/chat/completions(文本对话模型)
🤔为什么?
因为Python SDK把endpoint封装在client.chat.completions.create里了。
具体讲讲
也就是SDK能够补全API提供的base_url的所需endpoint,从而找到模型服务真正定位到的服务器资源位置(入口);
而curl/requests需要的是完整的endpoint,因此这时如果配置的仅仅是/v1,那必报错。
示例
这里的client.chat.completions.create实现了:“用OpenAI Chat Completions协议,向当前client的base_url发请求。”
response = client.chat.completions.create(
model=config["search_llm"],
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": get_prompts("tools", "get_asset_news_llm") \
.replace("{ticker}", ticker) \
.replace("{curr_date}", curr_date)
}
],
extra_body={"enable_search": True}
)
⭐而真正发生url拼接的地方,则是上下游代码实现的内部自动构造请求:POST .../v1/**chat/completions
