# 调用CoMi已发布的Agent API
# 适用场景
在CoMiBuilder后台制作发布了Agent(不包含工作流),第三方支持通过程序调用Agent API的形式进行集成。

# 适配方法
# 1、前提准备
# 1-1、准备Apikey
协同OA系统管理员后台 → CoMiBuilder → 应用中心 → API服务 → Api Key → 创建API Key给第三方调用使用,默认可选择全部接口:

# 1-2、获取远程调用Agent服务编码
首先,确保计划调用的Agent已经设计完成并正式发布。
然后,通过协同OA系统管理员后台 → CoMiBuilder → 应用中心 → Agent页签 → 搜索到计划调用的Agent,获得“服务编码”:

# 2、执行远程调用
# 2-1、非流式调用Agent
非流式调用Agent请求地址: http(https)://Nginx地址/seeyon/ai-platform/ai-manager/agent/svc/call/rest
请求方式:POST
Content-Type:application/json
Request Header:api-key
请求参数:
| 参数 | 类型 | 含义 | 是否必填 | |
|---|---|---|---|---|
| chatSessionId | string | 每次会话的唯一标识,需要调用者生成,使用uuid即可。 | Y | |
| sessionId | Long | Ai-manager生成的会话,可不传,仅当需要记忆上下文时需要传。对应上一次调用comi agent的输出data.aiSessionId | N | |
| input | String | 用户的输入内容 | Y | |
| agentCode | String | ComiBuilder侧已发布的agentCode,从comiBuilder侧查看 | Y |
CURL请求示例:
curl -X POST \
http://10.101.68.10/seeyon/ai-platform/ai-manager/agent/svc/call/rest \
-H "Content-Type: application/json" \
-H "api-key: sjoaOMDf1Ze5YJOZUaXwD8iS87bbBOXHBOR42aTY9DijGpCidS" \
-d '{
"chatSessionId": "0d8adcfd95794adf9aab7b8dc06b0d8d",
"sessionId": null,
"input": "翻译成英文:好好学习天天向上",
"agentCode": "tansfer"
}'
CURL请求结果输出示例:
{
"code": "0",
"message": "success",
"data": {
"id": "4481045495456417230",
"chatSessionId": "0d8adcfd95794adf9aab7b8dc06b0d8d",
"aiSessionId": "4698884980493336821",
"aiSessionName": null,
"callId": "8056787592516619398",
"agentId": "-2161078899843117468",
"agentCode": "tansfer",
"agentType": null,
"assistantId": "0",
"assistantCode": "",
"sessionType": 1,
"input": null,
"messageType": 1,
"content": "[翻译后的内容]:Study hard and make progress every day.",
"citationsJson": null,
"citationList": [],
"messageTime": 1768534203520,
"runStepId": null,
"stepType": "",
"stepName": "",
"stepInput": "",
"runStepStatus": "",
"stepTime": null,
"startedAt": 1768534203520,
"completedAt": null,
"expiredAt": null,
"cancelledAt": null,
"failedAt": null,
"totalTime": null,
"errorMsgTag": null,
"errorCode": null,
"promptTokens": null,
"completionTokens": null,
"totalTokens": null,
"finish": null,
"createUserName": null,
"modelCode": null,
"createTime": 1768534203523,
"updateTime": 1768534203523,
"runningStatus": null,
"sourceType": null,
"runSteps": null,
"hitKnowledgeRunSteps": null,
"needMarkBlueRunSteps": null,
"recordSaveStatus": true,
"assistant": null,
"needHistoryRecord": true,
"isInterrupt": 0,
"currentNodeType": null
}
}
CURL执行命令效果图:

Java远程调用代码示例:
/***
* Maven基础依赖:spring-boot-starter、spring-web、jackson-databind、spring-boot-starter-test
**/
@SpringBootTest
class DemoApplicationTests {
@Test
void contextLoads() {
// CoMi Agent API地址(非流式)
String apiUrl = "http://10.101.68.10/seeyon/ai-platform/ai-manager/agent/svc/call/rest";
// CoMi API Key
String apiKey = "sjoaOMDf1Ze5YJOZUaXwD8iS87bbBOXHBOR42aTY9DijGpCidS";
// CoMi Agent 之 翻译助手编码
String agentCode = "tansfer";
// POST请求消息体
Map<String, Object> requestBodyMap = new HashMap<>();
// 通过UUID创建每次对话的chatSessionId
requestBodyMap.put("chatSessionId", UUID.randomUUID().toString().replace("-", ""));
requestBodyMap.put("sessionId", null);
// 用户提示词
requestBodyMap.put("input", "翻译成英文:好好学习天天向上");
requestBodyMap.put("agentCode", agentCode);
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("api-key", apiKey);
// 创建 HttpEntity,直接使用 Map 对象
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestBodyMap, headers);
try {
// 添加JSON消息转换器
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
jsonConverter.setObjectMapper(objectMapper);
restTemplate.getMessageConverters().add(jsonConverter);
// 更改响应类型为Map
ResponseEntity<Map> response = restTemplate.exchange(
apiUrl,
HttpMethod.POST,
entity,
Map.class // 返回类型为Map
);
// 输出响应状态和结果
System.out.println("Status Code: " + response.getStatusCode());
System.out.println("Response Body: " + response.getBody());
System.out.println("Agent返回内容:" + ((Map)(response.getBody().get("data"))).get("content") );
} catch (Exception e) {
System.err.println("Error occurred while calling the API: " + e.getMessage());
e.printStackTrace();
}
}
}
# 2-2、流式调用
流式调用Agent请求地址: http(https)://Nginx地址/seeyon/ai-platform/ai-manager/agent/svc/call/stream
请求方式:POST
Content-Type:application/json
Request Header:api-key
请求参数:
| 参数 | 类型 | 含义 | 是否必填 | |
|---|---|---|---|---|
| chatSessionId | string | 每次会话的唯一标识,需要调用者生成,使用uuid即可。 | Y | |
| sessionId | Long | Ai-manager生成的会话,可不传。仅当需要记忆上下文时需要传。对应上一次调用comi agent的输出data.aiSessionId | N | |
| input | String | 用户的输入内容 | Y | |
| agentCode | String | ComiBuilder侧已发布的agentCode,从comiBuilder侧查看 | Y |
流式输出-CURL请求示例(标准SSE接口):
curl -X POST \
http://10.101.68.10/seeyon/ai-platform/ai-manager/agent/svc/call/stream \
-H "Content-Type: application/json" \
-H "api-key: sjoaOMDf1Ze5YJOZUaXwD8iS87bbBOXHBOR42aTY9DijGpCidS" \
-d '{
"chatSessionId": "0d8adcfd95794adf9aab7b8dc06b0d8d",
"sessionId": null,
"input": "翻译成英文:好好学习天天向上",
"agentCode": "tansfer"
}'

流式输出-CURL请求返回数据(第一段):
data: {
"id": null,
"chatSessionId": "0d8adcfd95794adf9aab7b8dc06b0d8d",
"aiSessionId": "-4449259218539558771",
"aiSessionName": "翻译成英文:好好学习天天向上",
"callId": "-6430567852231800020",
"agentId": "-2161078899843117468",
"agentCode": "tansfer",
"agentType": null,
"assistantId": null,
"assistantCode": null,
"sessionType": 1,
"input": "翻译成英文:好好学习天天向上",
"messageType": 1,
"content": "",
"citationsJson": "",
"citationList": null,
"messageTime": null,
"runStepId": null,
"stepType": "",
"stepName": "",
"stepInput": "",
"runStepStatus": "",
"stepTime": null,
"startedAt": null,
"completedAt": null,
"expiredAt": null,
"cancelledAt": null,
"failedAt": null,
"totalTime": null,
"errorMsgTag": null,
"errorCode": null,
"promptTokens": null,
"completionTokens": null,
"totalTokens": null,
"finish": 0,
"createUserName": null,
"modelCode": null,
"createTime": null,
"updateTime": null,
"runningStatus": null,
"sourceType": null,
"runSteps": [],
"hitKnowledgeRunSteps": null,
"needMarkBlueRunSteps": null,
"recordSaveStatus": true,
"assistant": null,
"needHistoryRecord": true,
"isInterrupt": 0,
"currentNodeType": null
}
流式输出-CURL请求返回数据(最后一段):
data: {
"id": null,
"chatSessionId": "0d8adcfd95794adf9aab7b8dc06b0d8d",
"aiSessionId": "-4449259218539558771",
"aiSessionName": "翻译成英文:好好学习天天向上",
"callId": "-6430567852231800020",
"agentId": "-2161078899843117468",
"agentCode": null,
"agentType": null,
"assistantId": null,
"assistantCode": null,
"sessionType": null,
"input": null,
"messageType": 5,
"content": "",
"citationsJson": null,
"citationList": [],
"messageTime": null,
"runStepId": null,
"stepType": null,
"stepName": null,
"stepInput": null,
"runStepStatus": "completed",
"stepTime": null,
"startedAt": 1768785609087,
"completedAt": 1768785609466,
"expiredAt": null,
"cancelledAt": null,
"failedAt": null,
"totalTime": "379",
"errorMsgTag": null,
"errorCode": null,
"promptTokens": 0,
"completionTokens": 0,
"totalTokens": 0,
"finish": 1,
"createUserName": "admin",
"modelCode": "qwen3-awq-32b",
"createTime": 1768785609063,
"updateTime": 1768785609466,
"runningStatus": 1,
"sourceType": null,
"runSteps": null,
"hitKnowledgeRunSteps": null,
"needMarkBlueRunSteps": null,
"recordSaveStatus": true,
"assistant": null,
"needHistoryRecord": true,
"isInterrupt": null,
"currentNodeType": null
}
# 2-3、流式结果messageType类型说明
1、messageType的各种情况
1:结果非流式
2:步骤
5:结果流式
7:命中知识源
2、消息中finish =1 代表本次会话结束,可以关闭接受消息。finish = 0 代表会话正在进行中,需要持续接收消息。
编撰人:het
快速跳转
← 消息同步 调用CoMi工作流API →