跳至内容

OpenAI 入门指南

本指南展示如何设置一个最小化部署,以便通过OpenAI API使用TensorZero网关。

简易设置

你可以使用简写形式openai::model_name来通过TensorZero调用OpenAI模型,除非你需要使用后备方案或自定义凭证等高级功能。

您可以在TensorZero变体中使用OpenAI模型,只需将model字段设置为openai::model_name。 例如:

[functions.my_function_name.variants.my_variant_name]
type = "chat_completion"
model = "openai::gpt-4o-mini-2024-07-18"

此外,您可以在推理请求中设置model_name来使用特定的OpenAI模型,而无需在TensorZero中配置函数和变体。

终端窗口
curl -X POST http://localhost:3000/inference \
-H "Content-Type: application/json" \
-d '{
"model_name": "openai::gpt-4o-mini-2024-07-18",
"input": {
"messages": [
{
"role": "user",
"content": "What is the capital of Japan?"
}
]
}
}'

高级设置

对于更复杂的场景(例如回退机制、自定义凭证),您可以在TensorZero中配置自己的模型和OpenAI提供商。

对于这个最小化配置,您的项目目录中只需要两个文件:

  • Directoryconfig/
    • tensorzero.toml
  • docker-compose.yml

关于生产环境部署,请参阅我们的部署指南

配置

创建一个最小化的配置文件,定义模型和一个简单的聊天功能:

config/tensorzero.toml
[models.gpt_4o_mini_2024_07_18]
routing = ["openai"]
[models.gpt_4o_mini_2024_07_18.providers.openai]
type = "openai"
model_name = "gpt-4o-mini-2024-07-18"
[functions.my_function_name]
type = "chat"
[functions.my_function_name.variants.my_variant_name]
type = "chat_completion"
model = "gpt_4o_mini_2024_07_18"

查看OpenAI上可用的模型列表

查看配置参考了解可选字段(例如覆盖api_base)。

Credentials

在运行网关之前,您必须设置OPENAI_API_KEY环境变量。

您可以通过将api_key_location设置为env::YOUR_ENVIRONMENT_VARIABLEdynamic::ARGUMENT_NAME来自定义凭证存储位置。 更多信息请参阅凭证管理指南和配置参考

此外,请参阅OpenAI-Compatible指南,了解如何使用其他兼容OpenAI的服务提供商的更多信息。

部署 (Docker Compose)

创建一个最小化的Docker Compose配置:

docker-compose.yml
# This is a simplified example for learning purposes. Do not use this in production.
# For production-ready deployments, see: https://www.tensorzero.com/docs/gateway/deployment
services:
gateway:
image: tensorzero/gateway
volumes:
- ./config:/app/config:ro
command: --config-file /app/config/tensorzero.toml
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY:?Environment variable OPENAI_API_KEY must be set.}
ports:
- "3000:3000"
extra_hosts:
- "host.docker.internal:host-gateway"

您可以通过docker compose up命令启动网关。

推理

向网关发起推理请求:

终端窗口
curl -X POST http://localhost:3000/inference \
-H "Content-Type: application/json" \
-d '{
"function_name": "my_function_name",
"input": {
"messages": [
{
"role": "user",
"content": "What is the capital of Japan?"
}
]
}
}'