Skip to main content

API 接入指南

概述

LangChat 提供兼容 OpenAI 接口规范的 API,可以通过标准的 HTTP 请求或 OpenAI SDK 将 Agent、Workflow 集成到已有业务系统中。

接口规范

Base URL

{YOUR_DOMAIN}/api/v1

认证方式

使用 Bearer Token 认证,在请求头中添加:
Authorization: Bearer your_api_key_here

主要接口

Chat Completions

POST /api/v1/chat/completions
请求参数:
{
  "model": "any",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ],
  "stream": true
}
参数说明:
参数类型必填说明
modelstring模型名称(填任意值即可,实际使用 API Key 绑定的模型)
messagesarray消息数组
streamboolean是否开启流式输出,默认 false
响应格式(非流式):
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "xxx",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!有什么可以帮助你的吗?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 20,
    "total_tokens": 30
  }
}
响应格式(流式):
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"delta":{"content":"你"},"index":0}]}

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"delta":{"content":"好"},"index":0}]}

data: [DONE]

代码示例

Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    api_key="your_api_key_here",
    base_url="https://your-domain.com/api/v1"
)

# 非流式调用
response = client.chat.completions.create(
    model="any",  # 填任意值即可
    messages=[
        {"role": "user", "content": "你好"}
    ]
)
print(response.choices[0].message.content)

# 流式调用
response = client.chat.completions.create(
    model="any",
    messages=[
        {"role": "user", "content": "你好"}
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content or "", end="")

Node.js (OpenAI SDK)

import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: 'your_api_key_here',
  baseURL: 'https://your-domain.com/api/v1',
});

// 非流式调用
const response = await openai.chat.completions.create({
  model: 'any',
  messages: [{ role: 'user', content: '你好' }],
});
console.log(response.choices[0].message.content);

// 流式调用
const stream = await openai.chat.completions.create({
  model: 'any',
  messages: [{ role: 'user', content: '你好' }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}

cURL

# 非流式
curl --location 'https://your-domain.com/api/v1/chat/completions' \
--header 'Authorization: Bearer your_api_key_here' \
--header 'Content-Type: application/json' \
--data '{
    "model": "any",
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ]
}'

# 流式
curl --location 'https://your-domain.com/api/v1/chat/completions' \
--header 'Authorization: Bearer your_api_key_here' \
--header 'Content-Type: application/json' \
--data '{
    "model": "any",
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ],
    "stream": true
}'

Java (OkHttp)

OkHttpClient client = new OkHttpClient();

MediaType JSON = MediaType.parse("application/json; charset=utf-8");
String json = """
    {
        "model": "any",
        "messages": [
            {"role": "user", "content": "你好"}
        ]
    }
    """;

Request request = new Request.Builder()
    .url("https://your-domain.com/api/v1/chat/completions")
    .addHeader("Authorization", "Bearer your_api_key_here")
    .addHeader("Content-Type", "application/json")
    .post(RequestBody.create(json, JSON))
    .build();

Response response = client.newCall(request).execute();
System.out.println(response.body().string());

配置说明

在 LangChat 管理后台的「接入渠道」页面:
  1. 选择「API 接入」标签
  2. 点击「新增链接/秘钥」
  3. 填写配置信息:
配置项必填说明
渠道名称自定义标识名称,如”客服机器人”
限流 (QPM)每分钟最大请求次数,默认 100
过期时间API Key 的有效期
开启历史记录是否保存对话历史
  1. 创建成功后,复制生成的 API Key

错误码

状态码说明
200请求成功
400请求参数错误
401认证失败(API Key 无效或过期)
429请求频率超限
500服务器内部错误

注意事项

  1. API Key 安全:请勿在前端代码中暴露 API Key,建议通过后端代理调用
  2. 请求限流:遵守配置的 QPM 限制,超限请求会被拒绝
  3. 模型参数model 参数填任意值即可,实际使用的模型由 API Key 绑定的 Agent/Workflow 决定
  4. 域名配置:生产环境请使用 HTTPS 协议

相关链接