搞了大半年AI应用开发相关,后知后觉一些细节问题……

Q & A

我们调用LLM API时,URL,也就是调用的端点设置至关重要。但在同一个模型服务中,你可能会看到:

  • Python示例:base_url = …/v1
  • curl示例:base_url = …/v1/chat/completions(文本对话模型)

🤔为什么?

因为Python SDKendpoint封装在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