🏆本文收录于 「滚雪球学SpringBoot」 专栏中,这个专栏专为有志于提升Java技能的你打造,覆盖Java编程的方方面面,助你从零基础到掌握Java开发的精髓。赶紧关注,收藏,学习吧!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
在这个信息化时代,企业和开发者对智能化、自动化的需求日益增加,尤其是在人工智能(AI)应用领域。越来越多的公司希望能够利用现有的AI技术,为自己的业务场景提供创新的解决方案,结合AI实现智能化转型。而腾讯云大模型知识引擎的 API开发模式(代码态) 正是为解决这一问题提供了强有力的支持。
前后突然横空出世的国产DeepSeek,轰动全球,引起全球热潮。它提供DeepSeek-R1 和 V3 两款大模型API,结合腾讯云强大的基础设施,为开发者和企业客户提供了一个极为灵活且高效的开发工具。固然对于你,无需再从零开始训练复杂的模型,而是可以通过简单调用API接口,快速搭建出符合自己需求的AI应用。今天,我将带着大家深入探讨这一API开发模式的多种优势,并通过实操案例帮助大家理解如何高效地将这些API整合到自己的项目中。
在开发AI应用时, 稳定性 是开发者最为关心的因素之一。腾讯云大模型知识引擎提供的 DeepSeek-R1 和 V3 模型API,能够保证稳定的服务和低延迟的响应,使得开发者可以更加专注于业务层面的开发,避免因服务中断而影响应用的运行。
除此之外, 安全性 也是API接入过程中的核心考量。腾讯云的大模型API不仅提供强大的加密技术保障,还在多个层面实施了严格的安全策略,确保企业数据和用户信息的安全。在这种安全环境下进行开发,不仅能保障数据隐私,还能提升用户对产品的信任度。
当然,API接口的 易用性 也是一大亮点。腾讯云提供了完整的 开发文档 和 示例代码,无论你是AI领域的新手还是资深专家,都能够快速上手。通过简单的API请求和少量代码,你就可以将AI功能集成到自己的应用中,省去了大量的开发和调试时间。
API开发模式的一大亮点就是它的 灵活性。无论你的需求是开发一个智能客服系统,还是构建一个语音识别的服务,腾讯云大模型知识引擎都能为你提供足够的灵活性,使得开发者能够根据实际需求自由组合API,定制符合特定场景的AI服务。
例如,假设你需要开发一个 智能问答系统,你可以通过以下API能力来组建你的AI应用:
通过这些能力,开发者可以轻松构建不同类型的应用,并灵活调整应用的功能模块。这样的高度定制化,确保了企业和开发者能够满足各种复杂的业务需求。
借助腾讯云大模型知识引擎的API,开发者无需重新构建和训练模型,只需要调用腾讯云提供的API接口,便能快速应用先进的AI技术。这不仅大大 缩短了开发周期,还帮助开发者降低了 开发成本。
对于大多数企业来说,构建一个高质量的AI模型需要投入大量的时间和资金。而通过腾讯云的API,企业可以轻松接入最先进的AI能力,无需承担繁重的训练任务,只需要通过简单的API请求即可实现强大的智能应用。这种方式大大减少了人工智能技术的应用门槛,使得更多企业能够享受到AI带来的红利。
接下来,我们将通过一个实际的案例来展示如何通过腾讯云大模型知识引擎的API开发模式,构建一个 智能客服系统。
在开始开发之前,首先你需要注册腾讯云账号,并获取 DeepSeek-R1 或 V3模型API 的访问密钥。你可以登录腾讯云控制台,进入API管理页面,创建一个新的API密钥。创建完成后,你将获得 API Key,用于后续的接口调用。
首先我们访问官方地址【大模型知识引擎 LKE】
通过主页进行【产品体验】,待开通跳转后,会赠送你相应百万起步的token套餐体验包,基本是完全够你试用免费体验的。
如果有相对应的需求,对应买些也是非常实惠的,例如:1000万tokens也就一百来块钱,供你用个个把子月。
然后我们直接点击【立即体验】,去体验下DeepSeek,它的魅力究竟有多强大。
在体验页,我们就可以自己也创建一个应用。
这里,我们需要给它设置一些基本属性,例如角色指令,还可选择 DeepSeek-R1/V3 模型。
开启“联网搜索”开关,即可在右侧对话调试窗口,测试联网模式的对话效果。
配置完成后,可在对话测试窗口测试联网模式下的应用对话效果。
答案生成后,将进一步展示搜索网页引用来源,单击参考来源,可跳转至原网页链接进行溯源。
单击发布,可将当前测试环境的应用发布到生产环境。
发布完成后,可前往发布管理 > 调用信息查看体验链接、分享体验链接、分享体验二维码。也可查看 API key,使用 接口调用 的方式,接入到业务场景中。
然后接着需要创建一下应用的密钥,及获取对应的appkey,这个后续在API调用时需要配置。
如上已经就拥有一个属于自己的DeepSeek啦,我们可以随心体验下它的问答究竟强到何种地步?
接着,我们还需要开通应用服务API,获取鉴权等,所以我们还需要为API创建访问密钥,创建地址如下:https://console.cloud.tencent.com/cam/capi。
接着我们就完成配置了,接入deepseek指日可待,我们需要访问官网提供的API页:https://cloud.tencent.com/act/pro/deepseek-api,进行对待相关API即可。
我们直接访问如下官网API,这里我们可以直接使用它原生提供的demo,比如我选择的是Java语言版本的,这里直接下载并解压即可。
先把对应的配置进行修改成你上方应用的,例如sseUrl:https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse
,这个是固定的API,接着就是botAppKey,这个是你应用的appkey, visitorBizId : 202403180002,非常轻松。
然后写个main函数进行问答测试即可。
package org.example;
public class Main {
public static void main(String[] args) {
String sid = Session.getSessionId();
System.out.println("session id: " + sid);
// HttpSSE sseClient = new HttpSSE();
// sseClient.sseInvoke("你是谁", sid);
String reqId = Session.getRequestId();
System.out.println("request id: " + reqId);
MyWebSocket webSocketClient = new MyWebSocket();
webSocketClient.webSocketInvoke("你能回答我一些问题吗?",sid, reqId);
}
}
执行结果展示如下:
它会根据你设定的角色标准进行联网查询。
接着我们可以将其进行封装,例如:
package com.hh.common.utils.deepSeek;
import okhttp3.*;
import okhttp3.sse.EventSource;
import okhttp3.sse.EventSourceListener;
import okhttp3.sse.EventSources;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
import java.util.concurrent.CountDownLatch;
@Component
public class HttpSSE {
private final String sseUrl = "https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse"; // SSE 服务器的 URL
private static String botAppKey = "xxxx"; // 机器人密钥,不是BotBizId (从运营接口人处获取)
private static String visitorBizId = "202403180002"; // 访客 ID(外部系统提供,需确认不同的访客使用不同的 ID)
private static String msg = ""; // 用于接收返回的内容。
// 用 CountDownLatch 确保异步任务完成后再返回结果
public void sseInvoke(String content, String sid, CountDownLatch latch) {
OkHttpClient client = new OkHttpClient();
// 创建 JSON 请求体
MediaType mediaType = MediaType.get("application/json");
JSONObject reqBody = new JSONObject();
try {
reqBody.put("content", content);
reqBody.put("bot_app_key", botAppKey);
reqBody.put("visitor_biz_id", visitorBizId);
reqBody.put("session_id", sid);
} catch (Exception e) {
e.printStackTrace();
}
Request request = new Request.Builder()
.url(sseUrl)
.post(RequestBody.create(reqBody.toString(), mediaType))
.build();
EventSourceListener listener = new EventSourceListener() {
@Override
public void onOpen(EventSource eventSource, Response response) {
System.out.println("SSE connection opened");
}
@Override
public void onClosed(EventSource eventSource) {
System.out.println("SSE connection closed");
}
@Override
public void onEvent(EventSource eventSource, String id, String type, String data) {
if (type.equals("reply")) {
try {
JSONObject dataObj = new JSONObject(data);
JSONObject payload = dataObj.getJSONObject("payload");
if (payload.length() > 0) {
boolean isFromSelf = payload.getBoolean("is_from_self");
boolean isFinal = payload.getBoolean("is_final");
String content = payload.getString("content");
if (isFromSelf) {
System.out.println("is_from_self, event: " + type + ", content: " + content);
} else if (isFinal) {
msg = content;
latch.countDown(); // 确保异步任务完成
}
}
} catch (JSONException e) {
throw new RuntimeException(e);
}
} else {
System.out.println("Received SSE event: " + type);
}
}
@Override
public void onFailure(EventSource eventSource, Throwable t, Response response) {
System.err.println("Error occurred: " + t.getMessage());
latch.countDown(); // 确保错误时也能够结束
}
};
EventSource.Factory factory = EventSources.createFactory(client);
factory.newEventSource(request, listener);
}
// 更新后的 receiveMsg 方法,使用 CountDownLatch 等待结果
public String receiveMsg(String content) {
String sid = Session.getSessionId();
System.out.println("session id: " + sid);
CountDownLatch latch = new CountDownLatch(1); // 用于等待异步任务完成
HttpSSE sseClient = new HttpSSE();
sseClient.sseInvoke(content, sid, latch);
try {
latch.await(); // 等待异步任务完成
} catch (InterruptedException e) {
e.printStackTrace();
}
return msg; // 返回最终接收到的消息
}
public static void main(String[] args) {
HttpSSE sseClient = new HttpSSE();
String response = sseClient.receiveMsg("好朋友科技上市有望吗?"); // 调用 SSE 接口,发送测试消息
System.out.println("最终接收到的回复: " + response);
}
}
接着我们再将定义一个接口,进行方法调用:
@ApiOperation("智能问答")
@PostMapping("/sendMsg")
public R<String> sendMsg(@RequestBody SendMsgModel model) {
return R.ok(deepSeekService.sendMsg(model));
}
定义接口
//智能问答
String sendMsg(SendMsgModel model);
接口实现类:
@Component
public class DeepSeekServiceImpl implements DeepSeekService {
@Resource
private HttpSSE httpSSE;
@Override
public String sendMsg(SendMsgModel model) {
System.out.println("问题为:" + model.getMsg());
String content = httpSSE.receiveMsg(model.getMsg());
System.out.println("回答为:" + content);
return content;
}
}
我们先不写页面,直接先通过Postman进行测试一波,看看能否掉通并成功返回相关问题回答。
显然,回答肯定是意料之内的。那么你去体验了吗?
除了上述问答AI,你还可以体验如下功能,接入也类似,对接对应的API即可。
接下来,你可以利用腾讯云的 文档解析API 对文本进行处理。比如,你可能需要解析一个包含用户常见问题的文档,并提取其中的关键信息。你可以将文档内容传递给API,API将返回解析结果。
data = {
"document": "这是一个包含常见问题的文档,问题包括:如何注册、如何重置密码等。"
}
response = requests.post(url, headers=headers, json=data)
parsed_document = response.json()
对于智能客服系统,单纯的关键词匹配远不能满足需求。为了实现更精确的语义匹配,你可以使用 embedding API 将用户输入的文本转化为向量,再与数据库中的已有数据进行匹配。
embedding_url = "https://api.deeplake.com/v1/embedding"
embedding_data = {
"text": "如何重置密码?"
}
embedding_response = requests.post(embedding_url, headers=headers, json=embedding_data)
embedding_result = embedding_response.json()
通过将用户的问题转化为向量,你就能实现更精确的语义匹配,提升问答系统的智能化水平。
为了让用户的对话更加自然流畅,腾讯云还提供了 多轮改写 API,能够帮助你优化用户的提问和系统的回答。例如,如果用户提问不够明确,API可以自动改写问题,提升问答质量。
rewrite_url = "https://api.deeplake.com/v1/rewrite"
rewrite_data = {
"text": "我忘记密码了,该怎么办?"
}
rewrite_response = requests.post(rewrite_url, headers=headers, json=rewrite_data)
optimized_answer = rewrite_response.json()
通过多轮改写,系统不仅能够理解用户的提问,还能够生成更加流畅和清晰的回答,使得整个对话过程更具自然感。
完成API调用和数据处理后,你完全可以将这些功能集成到现有的业务系统中,比如一个在线客服系统、APP、或是网站后台。通过这样的集成,智能客服就能通过API接口与用户进行交互,自动解答常见问题,甚至解决更复杂的用户需求。如上我重点演示的只是通过后端接口式的进行AI问答,随后我将完善页面,打造一个DeepSeek聊天小助手。
通过腾讯云大模型知识引擎的 API开发模式(代码态),开发者能够轻松地将AI技术集成到自己的应用中,打造专属的智能服务。腾讯云提供的 DeepSeek-R1 和 V3模型API,结合强大的文档解析、拆分、embedding和多轮改写等能力,让开发者能够轻松实现语义理解和自然语言处理,提升应用的智能化水平。
无论你是企业客户,还是个人开发者,借助腾讯云提供的API接口,你都能快速开发并上线自己的智能应用。通过高效的AI开发,你不仅能为用户提供更好的服务,还能提升自己的技术水平,走在行业的前沿。
在未来的AI时代,腾讯云大模型知识引擎的API开发模式将会为你带来更多的机遇与挑战,是时候发挥你的创意,打造出属于你的AI服务了!🚀
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。
码字不易,如果这篇文章对你有所帮助,帮忙给bug菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。 同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!
我是bug菌,CSDN | 掘金 | 腾讯云 | 华为云 | 阿里云 | 51CTO | InfoQ 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金等平台签约作者,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计30w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。
-End-
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。