Skip to main content

对话接口

介绍

该接口为最基础的对话API,根据用户输入生成AI智能体的响应结果,通过一个接口融入LinkAI的各项能力:

  1. 支持通过绑定 应用工作流,使用其背后的 知识库插件 等能力
  2. 支持一键切换所有支持的 大模型
  3. 支持 流式/非流式 输出,兼容 OpenAI 的接口结构
  4. 支持 多模态输入/输出,可输入文字、图片;输出文字、图片、视频、文件

在线接口调试:API接口调试

接口定义

接口地址

POST https://api.link-ai.tech/v1/chat/completions

请求头

参数取值说明
AuthorizationBearer YOUR_API_KEY参考 接口鉴权说明 创建 API Key 并填入
Content-Typeapplication/json表明使用JSON格式请求

请求体

参数类型是否必传说明
messageslist<object>消息上下文列表,其中每个元素的结构为 {"role": "user", "content": "你好"}, role 字段支持填写 system, user, assistant 中的一个,content字段不能为空
app_codestring应用工作流的 code。若不填则表示不绑定具体应用,将请求直接传递给模型
modelstring模型编码,不传则使用应用的默认模型。所有可选模型见 模型列表
temperaturefloat温度,默认为应用中配置的温度。取值范围为 [0, 1],温度越高回复越具有创意和不确定性,温度越低则回复更严谨
top_pint控制模型采样范围,默认值为 1
frequency_penaltyfloat频率惩罚项,该参数越大则更倾向于产生不同的内容,范围为 [-2, 2],默认值为 0
presence_penaltyfloat存在惩罚项,该参数越大则更倾向于产生不同的内容,范围为 [-2, 2],默认值为 0
streambool是否流式输出,默认值为 false

注意:

  • 当通过 app_code 参数指定了应用时,将会默认使用 应用设定 作为系统提示词,使用应用中配置的 默认模型 作为model,使用 应用的温度 作为 temperature 的值
  • 当通过 app_code 参数指定了工作流时,接口调用后将会从开始节点执行工作流,并将结束节点的输出通过接口返回

请求示例:

{
"app_code": "G7z6vKwp",
"messages": [
{ "role": "user", "content": "你好" }
]
}

注:app_code 需换成你自己创建应用的code、应用广场中公开应用的code,或不指定应用

响应结果

非流式响应

接口调用默认为非流式响应,会在所有内容生成完毕后一次性返回:

{
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好,请问有什么可以帮助您的吗?"
}
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 17,
"total_tokens": 26
}
}

注:choices.message.content 中为AI的响应内容,usage 部分 prompt_tokens、completion_tokens、total_tokens 分别表示请求的token数、响应的token数、全部消耗的token数,这三个费用相关字段直接使用模型返回的结果,平台不做处理。

一次对话的token计算包含 请求响应 中的总token数, 其中请求又包含 应用设定历史对话知识库内容用户问题,这些几个部分的token长度限制都可以在 应用管理 中找到。

流式响应

流式调用需要将传入参数 stream 设置为 true,将会在模型不断生成内容的过程中实时返回,适用于网页、APP、小程序等调用端进行流式输出:

data: {"choices": [{"index": 0, "delta": {"content": "你好!"}, "finish_reason": null}], "session_id": null}

data: {"choices": [{"index": 0, "delta": {"content": "我能"}, "finish_reason": null}], "session_id": null}

data: {"choices": [{"index": 0, "delta": {"content": "为你"}, "finish_reason": null}], "session_id": null}

data: {"choices": [{"index": 0, "delta": {"content": "做些什么?"}, "finish_reason": null}], "session_id": null}

data: {"choices": [{"index": 0, "delta": {}, "finish_reason": "stop", "usage": {"prompt_tokens": 9, "completion_tokens": 6, "total_tokens": 15}}], "session_id": null}

data: [DONE]

注:当输出为 "[DONE]" 时表示输出结束。

错误说明

当接口异常时会返回以下结构:

{
"error": {
"message": "Invalid request: user message content is empty",
"type": "invalid_request_error"
}
}

根据 HTTP状态码 (status code) 和错误信息 判断错误类型:

HTTP状态码描述
400请求格式错误
401接口鉴权失败,请检查 API Key 是否填写正确
402应用不存在,请检查 app_code 参数是否正确
403无访问权限,对于未公开应用,只有创建者账号才能调用
406账号积分额度不足
409内容审核不通过,问题、回答、检索的知识库中可能存在敏感词
503接口调用异常,联系客服处理

模型列表

接口支持的所有模型列表如下:

模型编码 (model)上下文长度说明
LinkAI-3.516KopenAI 3.5 模型
LinkAI-4o-mini128KopenAI 4o-mini模型
LinkAI-4o128KopenAI 4o模型
LinkAI-4-turbo128KopenAI 4-turbo模型
LinkAI-48KopenAI 4.0 模型
moonshot128KKimi模型,可自动切换不同上下文长度
claude-3-5-sonnet200KClaude3.5模型
claude-3-haiku200KClaude3 Haiku
claude-3-sonnet200KClaude3 Sonnet
claude-3-opus200KClaude3 Opus
qwen-turbo8K通义千问 Turbo
qwen-plus32K通义千问 Plus
qwen-max8K通义千问 Max
wenxin8K文心一言3.5
wenxin-48K文心一言4.0
doubao-pro-4K4K豆包4K模型
doubao-pro-32K32K豆包32K模型
doubao-pro-128K128K豆包128K模型
glm-44K智谱AI GLM-4
xunfei8K讯飞星火3.5
gemini32KGoogle Gemini
gemini-1.5-flash1000KGemini 1.5 Flash
gemini-1.5-pro1000KGemini 1.5 Pro

将模型编码传入 model 参数即可使用,推荐不传 model 参数,使用应用配置的默认模型。各模型价格见 计费规则

示例代码

文本对话

1.CURL请求

curl --request POST \
--url https://api.link-ai.tech/v1/chat/completions \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"app_code": "",
"messages": [
{
"role": "user",
"content": "你是谁"
}
]
}'

注:在 YOUR_API_KEY 处填入你创建的 API Key,在 app_code 中填入你创建的应用code。

2.Python代码请求

import requests

url = "https://api.link-ai.tech/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
body = {
"app_code": "",
"messages": [
{
"role": "user",
"content": "你好"
}
]
}
res = requests.post(url, json=body, headers=headers)
if res.status_code == 200:
reply_text = res.json().get("choices")[0]['message']['content']
print(reply_text)
else:
error = res.json().get("error")
print(f"请求异常, 错误码={res.status_code}, 错误类型={error.get('type')}, 错误信息={error.get('message')}")

注:

  • YOUR_API_KEY 处填入你创建的 API Key,在 app_code 中填入你创建的应用code。
  • 如果你使用的是 openai 的SDK,可以通过修改 api_base 配置快速完成键入,详见 OpenAI兼容

3.更多语言和在线调试

其他编程语言的接入代码可以在 API调试页面 进行代码生成,同时支持在线进行接口调试。


图片识别

支持用户输入图片并根据图片进行问答,使用前提:

  • 对于 应用接入:应用中需启用 "图像识别" 插件
  • 对于 工作流接入:工作流中需使用 "图像识别" 插件
curl https://api.link-ai.tech/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"app_code": "default",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图是什么?"
},
{
"type": "image_url",
"image_url": {
"url": "https://cdn.link-ai.tech/doc/vision-model-config.jpg"
}
}
]
}
]
}'

注:在 YOUR_API_KEY 处填入你创建的 API Key,将 app_code 中的值替换为你创建的应用或工作流的code。

OpenAI兼容

该接口完全兼容 OpenAI的输入和输出格式,所以可以直接使用 OpenAI SDK 完成接入,只需设置 api_baseapi_key 即可:

client = OpenAI(
base_url = "https://api.link-ai.tech/v1",
api_key = "YOUR API KEY"
)

如果需要在使用 OpenAI SDK 的同时指定应用,可以将 app_code 参数使用 "-" 分隔符拼接在 api_key 参数的后面,例如 Link_tOCJYmHxxm55eA1xs-Kv2fXJcH2