概要
蚂蚁百宝箱平台近期开放了OpenAPI / SDK的形式调用智能体相关服务的能力。并且承诺给每个开发者每月免费10亿token使用(包含大模型对话、知识库RAG、官方插件调用等多想能力)。
这篇文章中,主要给大家分享下如何在百宝箱中构建一个属于你自己的智能体,并使用 Python 和 Java 代码调通它!
让我们开始吧
1. 打开百宝箱,新建一个智能体应用
点击跳转:百宝箱,在左侧应用Tab中点击“新建应用”按钮。
在百宝箱,我们将应用分为对话型以及内容生成型两种。同时每种应用又配备了不同的构建方式,以满足不同用户的个性化需求。
- 对话型应用:允许用户以对话的形式与智能体进行交互。
- 内容生成型应用:支持文本生成、图片生成的能力。
应用类型 |
构建方式 |
说明 |
对话型 |
简单构建 |
通过简单配置即可实现应用搭建。 |
工作流 |
支持开发者通过拖拉拽的形式可视化进行流程节点编排,以满足复杂的业务场景。 |
|
内容生成型 |
文生图 |
支持用户输入文本进行图片生成。 |
图生图 |
能够根据用户上传的图片生成新的图片。 |
|
文本生成 |
适用于文本内容创作需求,例如作诗、写文案等场景。 |
|
工作流 |
支持开发者通过拖拉拽的形式可视化进行流程节点编排,以满足复杂的业务场景。 |
2. 发布你的第一个智能体应用
这里以简单构建方式的对话型应用为例,构建一个新闻查询助手,使用夸克搜索工具来实现从互联网中搜索新闻信息:
附提示词:
# 角色 你是一个新闻搜索助手,你可以帮助用户查询指定日期的新闻或帮助用户根据关键词搜索新闻内容。 # 流程 - 在使用工具进行搜索之前,你需要先理解用户的意图 - 根据你理解的用户意图,从用户提问中提取新闻相关的关键信息 - 将你提取的信息输入给工具,进行搜索 - 将搜索结果按照时间顺序总结之后返回给用户
之后,你需要点击发布按钮,并将你的智能体发布到“智能体SDK”渠道:
3. 在“百宝箱开放平台”中,创建调用令牌
在步骤2完成“授权并启用”后,点击“授权配置”按钮,跳转到百宝箱开放平台页面:
在百宝箱开放平台的“授权管理”Tab中,创建一个令牌。注意,场景选择“智能体调用”:
4. 接下来,用TBox SDK将智能体集成到你的项目系统中
百宝箱开放平台提供了OpenAPI、Python SDK、Java SDK、Node.js SDK四种方式,能够让你在你的项目中完成智能体的流式/非流式 对话 & 生成任务。具体方式参考下方调用示例。
调用示例
使用上述步骤创建的智能体和令牌信息,即可完成调用
注意:appId信息可以在智能体发布页获取,如下所示:
OpenAPI
直接使用以下curl命令即可:
curl --location 'https://api.tbox.cn/api/chat' --header 'Authorization: your-authorization-token-here' --header 'Content-Type: text/json' --header 'Accept: text/event-stream' --data '{"appId":"your-app-id-here","query":"今天有什么新闻","userId":"test","stream":true}'
Python SDK
流式响应
from tboxsdk.tbox import TboxClient tbox_client = TboxClient(authorization="your-authorization-token-here") response = tbox_client.chat(app_id="your-app-id-here", query="今天有什么新闻", user_id="test") for chunk in response: print(f"--------------------------------------------------------") print(f"data: {chunk}") print(f"--------------------------------------------------------")
非流式响应
from tboxsdk.tbox import TboxClient tbox_client = TboxClient(authorization="your-authorization-token-here") response = tbox_client.chat(app_id="your-app-id-here", query="今天有什么新闻", user_id="test", stream=False) resp_str = json.dumps(response, ensure_ascii=False) print(f"--------------------------------------------------------") print(f"data: {resp_str}") print(f"--------------------------------------------------------")
Java SDK
流式响应
import cn.tbox.sdk.TboxClient; import cn.tbox.sdk.core.exception.TboxClientConfigException; import cn.tbox.sdk.core.exception.TboxHttpResponseException; import cn.tbox.sdk.model.request.ChatRequest; import java.util.Map; public class ChatExample { public static void main(String[] args) throws TboxHttpResponseException { try { // Create a client with just authorization token TboxClient client = new TboxClient("your-authorization-token-here"); ChatRequest chatRequest = new ChatRequest("your-app-id-here", "今天有什么新闻", "test"); Iterable<Map<String, Object>> chatStream = (Iterable<Map<String, Object>>) client.chat(chatRequest); for (Map<String, Object> response : chatStream) { System.out.println("Received chunk: " + response); } } catch (TboxClientConfigException e) { System.err.println("Configuration error: " + e.getMessage()); e.printStackTrace(); } } }
非流式响应
import cn.tbox.sdk.TboxClient; import cn.tbox.sdk.core.exception.TboxClientConfigException; import cn.tbox.sdk.core.exception.TboxHttpResponseException; import cn.tbox.sdk.model.request.ChatRequest; import cn.tbox.sdk.model.response.SyncChatResponse; import cn.tbox.sdk.model.response.TboxResponse; public class ChatExample { public static void main(String[] args) throws TboxHttpResponseException { try { // Create a client with just authorization token TboxClient client = new TboxClient("your-authorization-token-here"); ChatRequest chatRequest = new ChatRequest("your-app-id-here", "今天有什么新闻", "test"); chatRequest.setStream(false); TboxResponse<SyncChatResponse> syncResult = (TboxResponse<SyncChatResponse>) client.chat(chatRequest); System.out.println(syncResult); } catch (TboxClientConfigException e) { System.err.println("Configuration error: " + e.getMessage()); e.printStackTrace(); } } }
Node.js SDK
流式响应
import { TboxClient } from 'tbox-nodejs-sdk'; const client = new TboxClient({ httpClientConfig: { authorization: 'your-authorization-token-here' } }); const stream = client.chat({ appId: 'your-app-id-here', query: '今天有什么新闻', userId: 'test' }); stream.on('data', (data) => { console.log('Received data:', data); }); stream.on('end', () => { console.log('Stream ended'); }); stream.on('error', (error) => { console.error('Stream error:', error); });
非流式响应
import { TboxClient } from 'tbox-nodejs-sdk'; const client = new TboxClient({ httpClientConfig: { authorization: 'your-authorization-token-here' } }); client.chatSync({ appId: 'your-app-id-here', query: '今天有什么新闻', userId: 'test' }, { sseFormat: true }).then(response => { console.log(response); });