如何轻松对接百度智能体API,让您的应用更加智能
在人工智能飞速发展的今天,将智能对话功能集成到您的应用中变得越来越重要。百度智能体API提供了强大的自然语言处理能力,可以帮助您的应用实现智能问答、聊天机器人等功能。本文将指导您完成对接 【百度智能体】 的API过程,并提供一个简单的代码示例,帮助您快速对接百度智能体API。
一、注册并发布百度智能体
官网:官网地址
- 1.创建智能体
- 2.选择零代码,并创建
-
3.发布并等待审核上线(审核完成自动上线)
体验地址:百度智能体 - 疯狂de程序员
-
4.发布部署
-
5.部署完成,会显示一下页面
-
6.选择API调用, 记录ID, 秘钥,在API中会使用这个两个获取 ACCESS_TOKEN
二、对接API
API调用:官网示例
由于官方文档过于简洁,示例代码的开发语言过于单一,导致很多小伙伴无法对接成功,下面我将提供Java版对接的示例代码。
三、Java示例代码
调用步骤:
- 根据应用ID和密钥,获取ACCESS_TOKEN
- 发起调用
@Slf4j
@SpringBootTest
public class BaiduTest {
@Autowired
private RestTemplate restTemplate;
@Autowired
RedisService redisService;
@Value("${baidu.clientId}")
private String CLIENT_ID; //部署的应用的ID
@Value("${baidu.clientSecret}")
private String CLIENT_SECRET; //部署的应用的秘钥
//获取部署的应用的 ACCESS_TOKEN
private String getAccessTokenUrl="https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials";
//对话地址
private String chatUrl="https://openapi.baidu.com/rest/2.0/lingjing/assistant/getAnswer?access_token=";
@Test
void test() throws Exception {
//外部用户ID(串联对话上下文使用,可自行定义,需要保证唯一性)
//接入方需要为每位使用接入方服务的用户生成唯一 ID 具体要求如下:
// • 唯一性:每个用户具有唯一的 ID,不同用户的 ID 不能相同
// • 格式:可以是数字或者字符串(数字、下划线、大小写字母),字符串的长度 <= 100字符
// • 可追溯:每个用户 ID,接入方可以追溯到用户
String openId = "1";
String text = "你会干啥?";
String res = sendPostRequest(openId,text);
log.info("res ==> {}", res);
//res ==> {"status":0,"message":"succ","logid":"*******",
// "data":{"content":[{"dataType":"txt","data":"哈哈,我可是个IT专家哦!我能做的事情可多啦,比如我可以分享编程的小技巧和心得体会,帮助你更好地理解和掌握编程技术。当然啦,如果你有具体的编程问题或需求,也可以告诉我,我会尽我所能为你解答和指导。那么,你有什么想了解的吗?"}],
// "threadId":"******************************","msgId":"******************************","referenceList":null}}
}
/**
* 获取 ACCESS_TOKEN,使用到了 redis 缓存
*/
public String getAccessToken(){
String accessToken = null;
if(redisService.hasKey(RedisConstant.BAIDU_AI_ACCESS_TOKEN)){
accessToken = redisService.getCacheObject(RedisConstant.BAIDU_AI_ACCESS_TOKEN);
return accessToken;
}
else {
String url = getAccessTokenUrl+"&client_id="+CLIENT_ID + "&client_secret="+CLIENT_SECRET;
HashMap res = restTemplate.getForObject(url, HashMap.class);
log.info("res ==> {}", res);
if(res.containsKey("access_token") && res.containsKey("expires_in")){
accessToken = res.get("access_token").toString();
redisService.setCacheObject(RedisConstant.BAIDU_AI_ACCESS_TOKEN,accessToken,Long.parseLong(res.get("expires_in").toString()), TimeUnit.SECONDS);
}
return accessToken;
}
}
/**
* 调用 API 实现对话
* @param openId
* @param text
* @return
* @throws UnsupportedEncodingException
*/
public String sendPostRequest(String openId, String text) throws UnsupportedEncodingException {
String url = chatUrl + getAccessToken();
// 准备请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 准备请求体
Map<String, String> requestParams = new HashMap<>();
Map<String,Object> ms = new HashMap<String, Object>();
Map<String,Object> content = new HashMap<String, Object>();
Map<String,Object> value = new HashMap<String, Object>();
value.put("showText",text);
content.put("type","text");
content.put("value",value);
ms.put("content",content);
requestParams.put("message", JSONUtil.toJsonPrettyStr(ms));
//client_id(智能体 ID,可在「文心智能体平台」平台获得。)
requestParams.put("source", CLIENT_ID);
requestParams.put("from", "openapi");
//外部用户ID(串联对话上下文使用,可自行定义,需要保证唯一性)
//接入方需要为每位使用接入方服务的用户生成唯一 ID 具体要求如下:
// • 唯一性:每个用户具有唯一的 ID,不同用户的 ID 不能相同
// • 格式:可以是数字或者字符串(数字、下划线、大小写字母),字符串的长度 <= 100字符
// • 可追溯:每个用户 ID,接入方可以追溯到用户
requestParams.put("openId", openId);
// 将请求参数转换为URL编码的字符串
StringBuilder requestBody = new StringBuilder();
for (Map.Entry<String, String> entry : requestParams.entrySet()) {
if (requestBody.length() > 0) {
requestBody.append('&');
}
requestBody.append(URLEncoder.encode(entry.getKey(), "UTF-8"))
.append('=')
.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
// 创建HttpEntity对象,包含请求头和请求体
HttpEntity<String> request = new HttpEntity<>(requestBody.toString(), headers);
try {
// 发送POST请求并获取响应体
String response = restTemplate.postForObject(url, request, String.class);
return response;
} catch (RestClientException e) {
// 处理异常,例如打印堆栈跟踪或返回错误消息等。
e.printStackTrace();
return null;
}
}
}
总结
至此,恭喜您!通过遵循本文的指导,您已成功将百度智能体API集成到您的应用中。这标志着您的应用现已迈入智能对话的新纪元,能够为用户提供更加丰富、个性化的互动体验。随着您对API的深入使用和不断探索,将有更多智能化的功能等待您去发掘和实现。 请记住,技术的世界日新月异,百度智能体API也在持续进化,以提供更强大的功能和更流畅的用户体验。我们鼓励您保持关注,定期更新,以便充分利用最新技术和功能。 最后,如果您在集成过程中遇到任何问题或困难,不要犹豫,立即联系我们的技术支持团队。我们随时准备为您提供帮助,解答您的疑问,并确保您的应用能够顺利运行在最前沿的技术之上。 再次祝贺您的成功集成,期待您的应用在智能对话领域大放异彩!