开始使用OpenAI兼容端点(例如Ollama)
本指南展示如何设置一个最小化部署,以便将TensorZero网关与Ollama等OpenAI兼容端点配合使用。
设置
本指南假设您已在本地运行Ollama服务(使用ollama serve
命令),并已提前拉取llama3.1
模型(例如执行ollama pull llama3.1
)。
请确保更新下方配置中的api_base
和model_name
参数,使其与您的OpenAI兼容终端及模型相匹配。
对于这个最小化配置,您的项目目录中只需要两个文件:
Directoryconfig/
- tensorzero.toml
- docker-compose.yml
关于生产环境部署,请参阅我们的部署指南。
配置
创建一个最小化的配置文件,定义模型和一个简单的聊天功能:
[models.llama3_1_8b_instruct]routing = ["ollama"]
[models.llama3_1_8b_instruct.providers.ollama]type = "openai"api_base = "http://host.docker.internal:11434/v1" # for Ollama running locally on the hostmodel_name = "llama3.1"api_key_location = "none" # by default, Ollama requires no API key
[functions.my_function_name]type = "chat"
[functions.my_function_name.variants.my_variant_name]type = "chat_completion"model = "llama3_1_8b_instruct"
Credentials
模型提供商配置中的api_key_location
字段用于指定如何处理API密钥认证:
-
如果您的终端节点不需要API密钥(例如默认的Ollama):
api_key_location = "none" -
如果您的终端节点需要API密钥,您有两种选择:
-
通过环境变量预先配置:
api_key_location = "env::ENVIRONMENT_VARIABLE_NAME"在启动网关前需要先设置好环境变量。
-
在推理时提供:
api_key_location = "dynamic::ARGUMENT_NAME"然后可以在推理请求中传递API密钥。
-
在这个示例中,Ollama在本地运行且无需身份验证,因此我们使用api_key_location = "none"
。
部署 (Docker Compose)
创建一个最小化的Docker Compose配置:
# 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: # - OLLAMA_API_KEY=${OLLAMA_API_KEY:?Environment variable OLLAMA_API_KEY must be set.} // not necessary for this example 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?" } ] } }'