Skip to content

聊天模型调用教程 ​

本文介绍如何使用 OpenAI 兼容规范接入并调用 VLX FLUX 的聊天模型。接口路径为 https://api.vlxflux.io/v1/chat/completions。

前置准备

  • 已注册 VLX FLUX 并获取 API Key
  • 已确认基础地址为 https://api.vlxflux.io/v1
  • 本地已安装对应编程语言环境

Python 调用 ​

安装依赖 ​

bash
pip install openai

基础调用 ​

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx",
    base_url="https://api.vlxflux.io/v1"
)

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Write a short poem about spring."}
    ]
)

print(response.choices[0].message.content)

流式响应 ​

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx",
    base_url="https://api.vlxflux.io/v1"
)

stream = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "Tell me a joke about programmers."}
    ],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")
print()

多轮对话 ​

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx",
    base_url="https://api.vlxflux.io/v1"
)

messages = [
    {"role": "system", "content": "You are a translation assistant."}
]

while True:
    user_input = input("User: ")
    if user_input.lower() in ["quit", "exit", "q"]:
        break

    messages.append({"role": "user", "content": user_input})

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages
    )

    reply = response.choices[0].message.content
    print(f"Assistant: {reply}")

    messages.append({"role": "assistant", "content": reply})

局部配置 ​

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("VLXFLUX_API_KEY"),
    base_url="https://api.vlxflux.io/v1"
)

curl 调用 ​

基础请求 ​

bash
curl https://api.vlxflux.io/v1/chat/completions   -H "Content-Type: application/json"   -H "Authorization: Bearer sk-xxxxxxxx"   -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "You are an expert programmer."
      },
      {
        "role": "user",
        "content": "How should I learn Python?"
      }
    ]
  }'

流式响应 ​

bash
curl https://api.vlxflux.io/v1/chat/completions   -H "Content-Type: application/json"   -H "Authorization: Bearer sk-xxxxxxxx"   -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "user",
        "content": "Write a short poem."
      }
    ],
    "stream": true
  }'

多轮对话示例 ​

bash
curl https://api.vlxflux.io/v1/chat/completions   -H "Content-Type: application/json"   -H "Authorization: Bearer sk-xxxxxxxx"   -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "You are a support assistant. Keep your tone friendly and professional."
      },
      {
        "role": "user",
        "content": "I cannot log in. The page says my password is incorrect, but I am sure it is right."
      }
    ]
  }'

响应格式 ​

json
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1690000000,
  "model": "gpt-3.5-turbo-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Here is your reply."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 12,
    "total_tokens": 27
  }
}

常用参数 ​

参数类型说明
modelstring必填,模型名称。
messagesarray必填,对话消息数组。
streamboolean是否开启流式输出。
temperaturenumber控制随机性。
max_tokensinteger限制最大输出长度。

错误处理 ​

python
import os
from openai import OpenAI, APIError, APIConnectionError, RateLimitError

client = OpenAI(
    api_key=os.environ.get("VLXFLUX_API_KEY"),
    base_url="https://api.vlxflux.io/v1"
)

try:
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "Hello"}]
    )
    print(response.choices[0].message.content)
except APIConnectionError:
    print("Connection failed")
except RateLimitError:
    print("Rate limit exceeded")
except APIError as e:
    print(f"API error: {e}")

相关链接 ​