API Path
/aipaas/lm/v1/table/interface
请求协议
HTTPS
请求方法
POST
请求头部 :
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | application/json | [string] | application/json | application/json | ||
| X-APP-ID | 是 | 买家中心-已购能力-【X-APP-ID】 | [string] | ||||
| Device-Uuid | 否 | 设备管理-设备uuid | [string] | ||||
| Authorization | 是 | 鉴权信息 | [string] |
请求参数 Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| message | 对话内容,多轮对话时内容建议按照user-> assistant -> user 的格式传参。目前仅支持单论,传入user即可 | 是 | [object] | |||
| message>>role | 角色,目前仅支持单论,传入user即可 system:系统消息 user: 用户消息 assistant: 助手消息 | 是 | [string] | |||
| message>>content | 当是List时:角色为用户的时候,必须传入一个file_url, 并且采用一个 | 是 | [object] | |||
| message>>content>>type | 数据类型text、file_url | 是 | [string] | |||
| message>>content>>text | 当type为text时,必填,最短输入个字符,最长2048 | 否 | [string] | |||
| message>>content>>file_url | 当type为file_url时,必填,数据为key-value对,key为"url", value 为文件的url, 可以通过url获取文件名称。content列表里面最少包含1个文件连接,最多包含10个 | 否 | [object] | |||
| model | 要使用的模型的ID,如果不填的话默认是"TeleAI/TeleTable" | 否 | [string] | |||
| stream | 默认值为 false,如果设置采用流式返回 | 否 | [boolean] | |||
| stream_options | 用于流响应的选项。仅在设置 stream: true 时设置此项。 | 否 | [object] | |||
| frequency_penalty | (暂不生效) 默认值为 0.0,在 -2.0 到 2.0 之间。正值会基于新生成词在已有文本中的频率进行惩罚,降低模型重复同一行文本的可能性。 | 否 | [double] | |||
| max_tokens | (暂不生效) 最大生成词元数量,不建议改动。输入词元和生成词元的总长度受模型上下文长度的限制。 | 否 | [int] | |||
| temperature | (暂不生效) 默认值为 0.0 建议范围在 0 到 1 之间。较高的值如 0.8 会使输出更随机,而较低的值如 0.2 会使输出更集中且具有确定性。大于1时,可能会导致结果变差。 | 否 | [double] | |||
| top_p | (暂不生效) 默认值为 0.001,不建议改动,取值范围为0-1之间,作为温度采样的替代方法,称为核采样,该方法中模型考虑具有top_p 概率质量的词元结果。 | 否 | [double] | |||
| top_k | (暂不生效) 未使用,保留。作用:随机候选数 | 否 | [int] |
响应内容 :
返回结果
> 成功-流式 (200)
> Json
> Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| id | 聊天补全的唯一标识符。 | 是 | [string] | |||
| choices | 聊天补全选项的列表。如果参数 n 大于 1,则可以有多个选项。 | 是 | [object] | |||
| choices>>finish_reason | 模型停止生成词元的原因。可能值包括: stop: 模型达到了自然停止点或提供的停止序列。 | 是 | [string] | |||
| choices>>index | 选项在选项列表中的索引 | 是 | [int] | |||
| choices>>type | 流式返回中区分该chunk块是“分析过程”还是“最终结果”"source"/"report" | 是 | [string] | |||
| choices>>file_size | 算法判定文件大小属性。“small”/"large" | 是 | [string] | |||
| choices>>delta | 模型生成的聊天补全消息。 | 是 | [object] | |||
| choices>>delta>>content | 消息的内容 | 是 | [string] | |||
| choices>>delta>>role | 此消息作者的角色。 | 是 | [string] | |||
| created | 聊天补全创建的Unix时间戳(以秒为单位) | 是 | [int] | |||
| model | 用于聊天补全的模型。 | 是 | [string] | |||
| object | 对象类型,始终为 chat.completion。 | 是 | [string] | |||
| usage | 补全请求的使用统计信息。(如果请求中stream_options为true,在最后一个返消息中返回相关信息) | 是 | [object] | |||
| usage>>prompt_tokens | 提示中的词元数量。 | 是 | [int] | |||
| usage>>completion_tokens | 在生成的补全中的词元数量。 | 是 | [int] | |||
| usage>>total_tokens | 请求中使用的总词元数(提示 + 补全)。 | 是 | [int] |
> 成功-非流式 (200)
> Json
> Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| id | 聊天补全的唯一标识符。 | 否 | [string] | |||
| choices | 聊天补全选项的列表。如果参数 n 大于 1,则可以有多个选项。 | 是 | [object] | |||
| choices>>finish_reason | 模型停止生成词元的原因。可能值包括: stop: 模型达到了自然停止点或提供的停止 | 是 | [string] | |||
| choices>>index | 选项在选项列表中的索引 | 是 | [int] | |||
| choices>>type | 非流式返回中统一返回过程和结果,该字段为空串 | 是 | [string] | |||
| choices>>file_size | 算法判定文件大小属性。“small”/"large" | 是 | [string] | |||
| choices>>message | 模型生成的聊天补全消息。 | 是 | [object] | |||
| choices>>message>>content | 消息的内容,将分析过程和最终结果统一返回,以\n[Final Answer]\n作为分隔符进行区分,前面是过程,后面是结果 | 是 | [string] | |||
| choices>>message>>role | 此消息作者的角色。 | 是 | [string] | |||
| created | 聊天补全创建的Unix时间戳(以秒为单位)。 | 是 | [int] | |||
| model | 用于聊天补全的模型。 | 是 | [string] | |||
| object | 对象类型,始终为 chat.completion。 | 是 | [string] | |||
| usage | 补全请求的使用统计信息。 | 是 | [object] | |||
| usage>>prompt_tokens | 提示中的词元数量。 | 是 | [int] | |||
| usage>>completion_tokens | 在生成的补全中的词元数量。 | 是 | [int] | |||
| usage>>total_tokens | 请求中使用的总词元数(提示 + 补全)。 | 是 | [int] |
成功示例[Mock API] :
data: {
"choices": [{
"delta": {
"role": "assistant",
"content": "需要查询"
},
"finish_reason": null,
"index": 0,
"type": "source",
"file_size": "small"
}],
"object": "chat.completion",
"created": 1746511123,
"model": "openchat",
"id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56"
}
data: {
"choices": [{
"delta": {
"role": "assistant",
"content": "2015"
},
"finish_reason": null,
"index": 0,
"type": "source",
"file_size": "small"
}],
"object": "chat.completion",
"created": 1746511123,
"model": "openchat",
"id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56"
}
...
data: {
"choices": [{
"delta": {
"role": "assistant",
"content": "\n"
},
"finish_reason": null,
"index": 0,
"type": "report",
"file_size": "small"
}],
"object": "chat.completion",
"created": 1746511131,
"model": "openchat",
"id": "chatcmpl-a504324c-6e10-11e8-adf0-58fb8443ee27"
}
data: {
"choices": [{
"delta": {
"role": "assistant",
"content": ""
},
"finish_reason": "stop",
"index": 0,
"type": "",
"file_size": "small"
}],
"object": "chat.completion",
"created": 1746511131,
"model": "openchat",
"id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56"
}
data: {
"choices": [],
"object": "chat.completion",
"created": 1747037707,
"model": "openchat",
"id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56",
"usage": {
"prompt_tokens": 4200,
"completion_tokens": 205,
"total_tokens": 4405
}
}
data: [DONE]
失败示例[Mock API] :
{
"seq_id": "a504324c-6e10-11e8-adf0-58fb8443ee27",
"code": 1001,
"message:": "参数错误",
}
该接口参考openai视觉理解接口形式,作以下微调以适配表格理解业务。
| 日期 | 版本 | 修订内容 |
|---|---|---|
| 2025-07-09 | v1.0.0 | 无 |
服务接口调用时需要严格遵循服务鉴权规则,服务调用鉴权规则请参见:开发指南 - 签名认证方式。
| 错误码 | 错误信息 |
|---|---|
| 1001 | 参数错误 |
| 1002 | 文件服务异常 |
| 1003 | 对话服务异常 |
| 1004 | 大模型请求失败 |
| 1005 | 内部服务错误 |
通用状态码请参考【状态码】中的【网关认证】和【通用业务】
流式请求参数示例
{
"model": "TeleAI/TeleTable",
"stream": true,
"stream_options": {
"include_usage": true
},
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "拖拉机销量如何"
},
{
"type": "file_url",
"file_url": {
"url": "https://fileshare-1304429954.cos.ap-beijing.myqcloud.com/%E5%B0%8F%E5%9E%8B%E6%8B%96%E6%8B%89%E6%9C%BA.csv"
}
}
]
}
]
}
流式响应示例
data: {"choices": [{"delta": {"role": "assistant", "content": "需要查询"}, "finish_reason": null, "index": 0, "type": "source", "file_size": "small"}], "object": "chat.completion", "created": 1746511123, "model": "openchat", "id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56"}
data: {"choices": [{"delta": {"role": "assistant", "content": "2015"}, "finish_reason": null, "index": 0, "type": "source", "file_size": "small"}], "object": "chat.completion", "created": 1746511123, "model": "openchat", "id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56"}
...
data: {"choices": [{"delta": {"role": "assistant", "content": "
"}, "finish_reason": null, "index": 0, "type": "report", "file_size": "small"}], "object": "chat.completion", "created": 1746511131, "model": "openchat", "id": "chatcmpl-a504324c-6e10-11e8-adf0-58fb8443ee27"}
data: {"choices": [{"delta": {"role": "assistant", "content": ""}, "finish_reason": "stop", "index": 0, "type": "", "file_size": "small"}], "object": "chat.completion", "created": 1746511131, "model": "openchat", "id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56"}
data: {"choices": [], "object": "chat.completion", "created": 1747037707, "model": "openchat", "id": "chatcmpl-f40d4004-6b0c-4a12-87b4-e21087400c56", "usage": {"prompt_tokens": 4200, "completion_tokens": 205, "total_tokens": 4405}}
data: [DONE]
response失败消息体样例
{
"seq_id": "a504324c-6e10-11e8-adf0-58fb8443ee27",
"code": 1001,
"message:": "参数错误",
}
非流式请求示例
{
"model": "TeleAI/TeleTable",
"stream": false,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "第四季度拖拉机销量多少"
},
{
"type": "file_url",
"file_url": {
"url": "https://fileshare-1304429954.cos.ap-beijing.myqcloud.com/%E5%B0%8F%E5%9E%8B%E6%8B%96%E6%8B%89%E6%9C%BA.csv"
}
}
]
}
]
}
非流式响应示例
{
"choices": [
{
"message": {
"role": "assistant",
"content": "需要查询2015年第四季度小型拖拉机的产量
思路为从'2015年第四季度-139.2'列中提取数值139.2作为2015年第四季度小型拖拉机的产量
[Final Answer]
2015年第四季度小型拖拉机的产量为139.2。"
},
"finish_reason": "stop",
"index": 0,
"type": "",
"file_size": "small"
}
],
"object": "chat.completion",
"created": 1747038305,
"model": "openchat",
"id": "chatcmpl-b6ee343d-8c94-4b21-8325-98091023ebeb",
"usage": {
"prompt_tokens": 4204,
"completion_tokens": 100,
"total_tokens": 4304
}
}
response失败消息体样例
{
"seq_id": "a504324c-6e10-11e8-adf0-58fb8443ee27",
"code": 1001,
"message:": "参数错误"
}
openai调用示例(裸服务无鉴权, 星河鉴权需要设置header字段 天翼AI开放平台)
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/** 主类,用于发起HTTP请求并处理响应 */
public class Example {
public static void main(String[] args) {
example();
}
/**
* 方法中使用到的 JSONUtil、HttpRequest、HttpResponse均来自Hutool工具类。
* 具体maven依赖为:
*
* cn.hutool
* hutool-all
* 5.8.29
*
*/
public static void example() {
try {
String url = "算法调用地址";
// 设置请求头
Map headers = new HashMap();
//调用鉴权
headers.put("Content-Type", "application/json");
headers.put("X-APP-ID", "yourAppId");
headers.put("Authorization", "yourAuthorization");
// 创建请求对象
Map request = new HashMap();
request.put("traceId", "a504324c-6e10");
Map message1 = new HashMap();
message1.put("role", "user");
message1.put("content", "帮忙分析一下这些excel文档");
request.put("messages", Arrays.asList(message1));
request.put("stream", true);
request.put("temperature", 0);
Map params = new HashMap();
params.put("file_uuids", Arrays.asList("d12fd037-19df-4973-a246-290673b6407a"));
request.put("extra_params", params);
// 将请求对象转换为JsonNode
String requestString = JSONUtil.toJsonStr(request);
// 发起HTTP请求
HttpResponse response =
HttpRequest.post(url)
.headerMap(headers, true)
.body(requestString)
.execute();
// 输出响应结果
System.out.println(response.body());
} catch (Exception e) {
e.printStackTrace();
}
}
}
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DA SHSCOPE_API_KEY", "empty"),
base_url="http://127.0.0.1:8095/v1",
)
stream_flag = True
request_json = {
"model":"TeleAI/TeleTable",
"stream":stream_flag,
"messages":[
{
"role": "user",
"content": [
{
"type": "file_url",
"file_url": {
"url": "https://fileshare-1304429954.cos.ap-beijing.myqcloud.com/%E5%B0%8F%E5%9E%8B%E6%8B%96%E6%8B%89%E6%9C%BA.csv"
},
},
{"type": "text", "text": "谁是销售冠军"}
]
}
]
}
if stream_flag:
request_json["stream_options"] = {
"include_usage": True
}
completion = client.chat.completions.create(**request_json)
if stream_flag:
for chunk in completion:
print(chunk)
else:
print(completion)