接口信息
API Path
/aipaas/mllm/v1/telemm30b/completions
请求协议
HTTPS POST
请求头部:
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | application/json | [string] | - | - | application/json | application/json |
| X-APP-ID | 是 | 系统管理--API Key,创建应用获取AppID 和AppKey,公网鉴权,公网调用时必传 | [string] | - | - | - | - |
| Device-Uuid | 否 | 设备管理-设备uuid | [string] | - | - | - | - |
| Authorization | 是 | 鉴权信息 | [string] | - | - | - | - |
请求参数
Json Object
| 参数名 | 说明 | 必填 | 类型 |
|---|---|---|---|
traceId | 接口跟踪ID,每次调用需不同,可使用UUID,用于日志排除、链路跟踪, 长度小于128位。其他类型可能会导致结果不符合预期 | 否 | [string] |
timestamp | 当前时间戳 | 否 | [long] |
model | 要使用的模型的ID,本字段可以不填,若填写必须为:"TeleAI/TeleMM" | 否 | [string] |
messages | 对话内容,多轮对话时内容必须严格按照user-> assistant -> user 的格式传参 | 是 | [array] |
messages>>role | 角色:system-系统消息, user-用户消息, assistant-助手消息,仅支持这三种角色 | 是 | [string] |
messages>>content | content中文本信息是必填的,图片信息不是必填的 ,文本可以直接以string形式作为content的值,也可以是通过array的形式传入。格式必须为:单个字符串或字符串数组 | 是 | [object] |
messages>>content>>type | 数据类型text、image_url,如果 content 为array类型时,type必填 | 否 | [string] |
messages>>content>>text | 当type为text时,必填 | 否 | [string] |
| messages>>content>>image_url | 当type为image_url时,必填,数据为一个key-value对,key为"url", value 为图片的base64编码,需以"data:image..."开头(图片短边大于28,h*w < 4096*2160) | 否 | [object] |
| messages>>content>>image_url>>url | 图片数据,图片base64 | 否 | [string] |
| stream | 默认值为 false,如果设置,部分消息增量将被发送。 | 否 | [boolean] |
| stream_options | 用于流响应的选项。仅在设置 stream: true 时设置此项。 | 否 | [object] |
| stream_options>>include_usage | 是否包含统计信息,如果为true,则在data: [DONE]之前流式传输的一个块中usage此块上的字段显示整个请求的token使用情况统计信息 | 否 | [boolean] |
| max_completion_tokens | 最大生成词元数量。输入词元和生成词元的总长度受模型上下文长度的限制。参数范围是(0,18432)。 如果max_tokens+输入的token数大于max_model_lens,就会超出模型的处理能力,会导致内部错误。同max_tokens, 如果max_completion_tokens 和 max_tokens都填了,以max_completion_tokens为准 | 否 | [int] |
| max_tokens | 最大生成词元数量。输入词元和生成词元的总长度受模型上下文长度的限制。参数范围是(0,18432)。 如果max_tokens+输入的token数大于max_model_lens,就会超出模型的处理能力,会导致内部错误。同max_completion_tokens。 如果max_completion_tokens 和 max_tokens都填了,以max_completion_tokens为准 | 否 | [int] |
| temperature | 使用的采样温度,建议范围在 0 到 1 之间。较高的值如 0.8 会使输出更随机,而较低的值如 0.2 会使输出更集中且具有确定性。取之范围为[0,2] | 否 | [double] |
| top_p | 取值范围为(0,1]之间,作为温度采样的替代方法,称为核采样,该方法中模型考虑具有top_p 概率质量的词元结果。 | 否 | [double] |
| n | 为每条输入消息生成多少个聊天补全选项。注意,您将根据所有选项中生成的词元数量收费。将n保持为1以最小化成本。取值范围为[1,5],当temperature=0.0时,n必须为1 | 否 | [int] |
| top_k | 作用:随机候选数(不建议修改) 取值范围:[1,120000] | 否 | [int] |
| frequency_penalty | 在 [-2.0,2.0] 之间。正值会基于新生成词在已有文本中的频率进行惩罚,降低模型重复同一行文本的可能性 | 否 | [double] |
| chat_template_kwargs | 聊天对话的相关参数 | 否 | [object] |
| chat_template_kwargs>>enable_thinking | 是否打开思考模式, 如果不填默认是打开思考模式的 | 否 | [boolean] |
| repetition_penalty | 默认值:1.01 取值范围(0,2]。模型生成时连续序列中的重复度。提高该参数时可以降低模型生成的重复度,1.0表示不做惩罚。该参数非OpenAI标准参数。通过 Python SDK调用时,请放入 extra_body 对象中。配置方式为:extra_body={"repetition_penalty":xxx} | 否 | [double] |
| response_format | 返回内容的格式 | 否 | [object] |
| response_format>>type | 返回内容的格式,text:输出文字回复;json_object:输出标准格式的JSON字符串;json_schema:输出指定格式的JSON字符串 | 否 | [string] |
| response_format>>json_schema | 当 type 为 json_schema 时,该字段为必选 | 否 | [object] |
| response_format>>json_schema>>name | Schema 的唯一标识名称。仅支持字母(不区分大小写)、数字、下划线和短横线。当type为json_schema时必填 | 否 | [string] |
| response_format>>json_schema>>description | 描述 Schema 的用途 | 否 | [string] |
| response_format>>json_schema>>schema | 定义模型输出的数据结构,当type为json_schema时必填 | 否 | [object] |
| thinking_budget | 未生效-思考过程的最大 Token 数,该参数非OpenAI标准参数。通过 Python SDK调用时,请放入 extra_body 对象中。配置方式为:extra_body={"thinking_budget": xxx} | 否 | [int] |
| seed | 随机数种子 | 否 | [int] |
| logprobs | 是否返回输出 Token 的对数概率 | 否 | [boolean] |
| top_logprobs | 指定在每一步生成时,返回模型最大概率的候选 Token 个数。建议取值:[0,5],仅当 logprobs 为 true 时生效 | 否 | [int] |
| stop | 用于指定停止词。string 或 array格式必须为:单个字符串或字符串数组 | 否 | [object] |
| tools | 包含一个或多个工具对象的数组,供模型在 Function Calling 中调用 | 否 | [array] |
| tools>>type | 工具类型,当前仅支持设为function | 否 | [string] |
| tools>>function | 用于定义一个可被模型调用的函数(工具)。模型会根据用户输入与函数描述,自动判断是否调用以及如何填充参数 | 否 | [object] |
| tools>>function>>name | 工具名称,仅支持字母(不区分大小写)、数字、下划线和短横线 | 否 | [string] |
| tools>>function>>description | 用于描述函数的用途、适用场景以及参数语义说明,供模型在自动选择和调用工具时参考 | 否 | [string] |
| tools>>function>>parameters | 定义函数参数结构,模型将根据该结构生成调用参数 | 否 | [object] |
| tool_choice | 如果配置tools参数后,需要设置本参数,否则结果会不被解析,推荐设置为“auto”;”工具选择策略,string 或 object,auto:大模型自主选择工具策略,none:不希望进行工具调用;强制调用:强制调用某个工具,可设定tool_choice参数为{"type": "function", "function": {"name": "the_function_to_call"}} | 否 | [object] |
| parallel_tool_calls | 默认值为 false,是否开启并行工具调用。true:开启,false:不开启 | 否 | [boolean] |
| presence_penalty | 默认值为 0 取值范围 [-2.0,2.0] 。正值会基于新生成词是否已经出现在当前文本中进行惩罚,增加模型谈论新主题的可能性 | 否 | [double] |
返回结果
成功返回:
流式返回(stream=true):
| 参数名 | 说明 | 必填 | 类型 | 示例 |
|---|---|---|---|---|
id | 聊天补全的唯一标识符(uuid4) | 是 | [string] | - |
created | 时间戳 | 是 | [long] | - |
model | 用于生成补全的模型 | 是 | [string] | - |
object | 对象类型 | 是 | [string] | - |
choices | 聊天补全选项的列表 | 否 | [array] | - |
choices>>finish_reason | 模型停止生成标记的原因。原因可能是stop模型到达自然停止点或提供的停止序列、 length达到请求中指定的最大标记数。 如果模型调用了工具,tool_calls | 否 | [string] | - |
choices>>stop_reason | 模型内部的停止原因,string/int | 否 | [string] | - |
choices>>index | 选择列表中的索引 | 否 | [int] | - |
choices>>logprobs | 输出标记的对数概率 | 否 | [object] | - |
| choices>>delta | 增量内容 | 是 | [object] | - |
| choices>>delta>>refusal | 拒绝回答 | 否 | [string] | - |
| choices>>delta>>role | 角色 | 否 | [string] | assistant |
| choices>>delta>>content | 回复内容 | 否 | [string] | - |
| choices>>delta>>reasoning | 深度思考 | 否 | [string] | - |
| choices>>delta>>reasoning_content | 深度思考内容 | 否 | [string] | - |
| choices>>delta>>tool_calls | 工具调用 | 否 | [array] | - |
| usage | token用量 | 否 | [object] | - |
| usage>>completion_tokens | 输出token数 | 否 | [integer] | - |
| usage>>prompt_tokens | 输入token数 | 否 | [integer] | - |
| usage>>total_tokens | 总token数 | 否 | [integer] | - |
| usage>>completion_tokens_details | 输出token详情 | 否 | [object] | - |
非流式返回(stream=false):
| 参数名 | 说明 | 必填 | 类型 | 示例 |
|---|---|---|---|---|
id | 完成ID | 是 | [string] | - |
created | 创建时间 | 是 | [integer] | - |
model | 模型 | 是 | [string] | - |
object | 固定为chat.completion | 是 | [string] | chat.completion |
choices | 候选列表 | 是 | [array] | - |
choices>>finish_reason | 结束原因 | 是 | [string] | stop |
| choices>>index | 候选序号 | 是 | [integer] | 0 |
choices>>logprobs | 对数概率 | 否 | [object] | - |
choices>>message | 回复消息对象 | 是 | [object] | - |
choices>>message>>role | 角色 | 是 | [string] | assistant |
choices>>message>>content | 回复内容 | 是 | [string] | - |
choices>>message>>reasoning | 深度思考 | 否 | [string] | - |
choices>>message>>reasoning_content | 深度思考内容 | 否 | [string] | - |
choices>>message>>refusal | 拒绝回答 | 否 | [string] | - |
choices>>message>>tool_calls | 工具调用 | 否 | [array] | - |
usage | token用量 | 是 | [object] | - |
usage>>completion_tokens | 输出token数 | 是 | [integer] | - |
usage>>prompt_tokens | 输入token数 | 是 | [integer] | - |
usage>>total_tokens | 总token数 | 是 | [integer] | - |
usage>>completion_tokens_details | 输出token详情 | 否 | [object] | - |
失败返回
| 返回码 | 说明 | 必填 | 类型 | 示例 |
|---|---|---|---|---|
| code | 返回码 | 是 | [int] | 1001 |
| message | 返回码描述 | 是 | [string] |
|
| timestamp | 时间戳 | 否 | [long] |
|
代码示例
流式请求-纯文本
{
"traceId": "uuid-001",
"timestamp": 1694280000000,
"model": "TeleAI/TeleMM",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
],
"stream": true,
"stream_options": {
"include_usage": true
},
"max_completion_tokens": 1024,
"temperature": 0.7,
"top_p": 0.9
}流式返回示例
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1694280000,"model":"TeleAI/TeleMM","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1694280000,"model":"TeleAI/TeleMM","choices":[{"index":0,"delta":{"content":"你"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1694280000,"model":"TeleAI/TeleMM","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1694280000,"model":"TeleAI/TeleMM","choices":[],"usage":{"prompt_tokens":10,"completion_tokens":20,"total_tokens":30}}
data: [DONE]流式请求-多模态
{
"traceId": "uuid-002",
"timestamp": 1694280000000,
"model": "TeleAI/TeleMM",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请描述这张图片"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}
}
]
}
],
"stream": true
}非流式请求
{
"traceId": "uuid-003",
"timestamp": 1694280000000,
"model": "TeleAI/TeleMM",
"messages": [
{
"role": "user",
"content": "你好,一句话介绍一下你自己"
}
],
"stream": false,
"max_completion_tokens": 1024
}非流式返回示例
{
"id": "chatcmpl-xxx",
"created": 1694280000,
"model": "TeleAI/TeleMM",
"object": "chat.completion",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"role": "assistant",
"content": "你好!我是TeleMM多模态理解大模型,由中电信人工智能科技研发。",
"reasoning": "",
"reasoning_content": "",
"refusal": null
}
}
],
"usage": {
"completion_tokens": 20,
"prompt_tokens": 10,
"total_tokens": 30,
"completion_tokens_details": {
"reasoning_tokens": 0
}
}
}非流式请求-多模态
{
"traceId": "uuid-004",
"timestamp": 1694280000000,
"model": "TeleAI/TeleMM",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片里有什么?"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}
}
]
}
],
"stream": false
}多轮对话
{
"traceId": "uuid-005",
"timestamp": 1694280000000,
"model": "TeleAI/TeleMM",
"messages": [
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!有什么可以帮你的?"
},
{
"role": "user",
"content": "介绍一下你自己"
}
],
"stream": false
}工具调用
{
"traceId": "uuid-006",
"timestamp": 1694280000000,
"model": "TeleAI/TeleMM",
"messages": [
{
"role": "user",
"content": "北京今天天气怎么样?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto",
"stream": false
}Java调用示例
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class TeleMMExample {
public static void main(String[] args) throws Exception {
String url = "https://openapi.teleagi.cn/aipaas/mllm/v1/telemm30b/completions";
String json = "{"
+ "\"traceId\": \"uuid-001\","
+ "\"model\": \"TeleAI/TeleMM\","
+ "\"messages\": [{\"role\": \"user\", \"content\": \"你好\"}],"
+ "\"stream\": true"
+ "}";
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("X-APP-ID", "你的AppID");
conn.setRequestProperty("Device-Uuid", "你的设备uuid");
conn.setRequestProperty("Authorization", "Bearer 你的鉴权信息");
conn.setDoOutput(true);
try (OutputStream os = conn.getOutputStream()) {
os.write(json.getBytes("UTF-8"));
}
// 读取SSE流
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
String line;
while ((line = br.readLine()) != null) {
if (line.startsWith("data:")) {
String data = line.substring(5).trim();
if ("[DONE]".equals(data)) break;
System.out.println(data);
}
}
}
}
}Python调用示例
import requests
url = "https://openapi.teleagi.cn/aipaas/mllm/v1/telemm30b/completions"
headers = {
"Content-Type": "application/json",
"X-APP-ID": "你的AppID",
"Device-Uuid": "你的设备uuid",
"Authorization": "Bearer 你的鉴权信息",
}
payload = {
"traceId": "uuid-001",
"model": "TeleAI/TeleMM",
"messages": [{"role": "user", "content": "你好"}],
"stream": True,
}
resp = requests.post(url, headers=headers, json=payload, stream=True)
# 流式解析 SSE
for line in resp.iter_lines(decode_unicode=True):
if line and line.startswith("data:"):
data = line[len("data:"):].strip()
if data == "[DONE]":
break
print(data)状态码说明
| 状态码 | 状态描述 |
|---|---|
| 1000 | 请求成功 |
| 1001 | 内部服务错误 |
| 1002 | 参数错误 |
| 1003 | 数据库没有查询到入库数据 |
| 1004 | 数据库设置收藏失败 |
| 1005 | 大模型请求失败 |