“ 聊天机器人看着是一个很简单的功能,但能把聊天机器人做好却不是一件简单的事**”**
在大模型的众多应用中,聊天机器人可以说是其中比较简单,也是拥有众多应用场景的一个功能;从技术的角度来说,聊天机器人的实现很简单,但其实也很复杂。
那到底怎么实现一个聊天机器人呢?
聊天机器人的实现
对很多学习大模型技术的人来说,可能聊天机器人就是你的第一个实操项目;原因就是其实现起来比较简单,从技术实现来看只需要使用大模型服务商提供的SDK或者API接口就可以实现一个聊天机器人的功能。
比如说阿里通义千问提供的基于API实现的对话功能代码:
import java.io.BufferedReader;``import java.io.InputStreamReader;``import java.io.OutputStream;``import java.net.HttpURLConnection;``import java.net.URL;``import java.nio.charset.StandardCharsets;`` ``import com.google.gson.Gson;`` ``public class Main {`` ` `static class Message {` `String role;` `String content;`` ` `public Message(String role, String content) {` `this.role = role;` `this.content = content;` `}` `}`` ` `static class RequestBody {` `String model;` `Message[] messages;`` ` `public RequestBody(String model, Message[] messages) {` `this.model = model;` `this.messages = messages;` `}` `}`` ` `public static void main(String[] args) {` `try {` `// 创建请求体` `RequestBody requestBody = new RequestBody(` `"qwen-plus",` `new Message[] {` `new Message("system", "You are a helpful assistant."),` `new Message("user", "你是谁?")` `}` `);`` ` `// 将请求体转换为 JSON` `Gson gson = new Gson();` `String jsonInputString = gson.toJson(requestBody);`` ` `// 创建 URL 对象` `URL url = new URL("https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions");` `HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();`` ` `// 设置请求方法为 POST` `httpURLConnection.setRequestMethod("POST");` `httpURLConnection.setRequestProperty("Content-Type", "application/json; utf-8");` `httpURLConnection.setRequestProperty("Accept", "application/json");`` ` `// 若没有配置环境变量,请用百炼API Key将下行替换为:String apiKey = "sk-xxx";` `String apiKey = System.getenv("DASHSCOPE_API_KEY");` `String auth = "Bearer " + apiKey;` `httpURLConnection.setRequestProperty("Authorization", auth);`` ` `// 启用输入输出流` `httpURLConnection.setDoOutput(true);`` ` `// 写入请求体` `try (OutputStream os = httpURLConnection.getOutputStream()) {` `byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);` `os.write(input, 0, input.length);` `}`` ` `// 获取响应码` `int responseCode = httpURLConnection.getResponseCode();` `System.out.println("Response Code: " + responseCode);`` ` `// 读取响应体` `try (BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), StandardCharsets.UTF_8))) {` `StringBuilder response = new StringBuilder();` `String responseLine;` `while ((responseLine = br.readLine()) != null) {` `response.append(responseLine.trim());` `}` `System.out.println("Response Body: " + response);` `}`` ` `} catch (Exception e) {` `e.printStackTrace();` `} finally {` `System.exit(0);` `}` `}``}
代码看起来是不是很简单,主要就两个角色system和user;有些模型可能是三个角色,还一个是assistant的角色。
为了更好的使用大模型,因此需要一个system角色来定义大模型所扮演的角色,它可以是一名工程师,也可以是一名科学家;用户可以根据自己的需求来定义大模型的角色。
而由于大模型没有记忆功能,因此就需要通过会话的方式,把聊天的记录输入到大模型中,这样就可以让大模型在一个固定的上下文中聊天,这样有助于大模型更好地理解用户的意图。所以,一般在实际应用场景中,每次都会携带前面多轮会话的内容到大模型中。
而在与前端的交互中,一般有两种选择,一种是等大模型完全回复完毕,然后把所有内容一起返回给前端;另一种是采用流式返回的方式,把大模型回复的内容一点一点的响应给前端,就是我们常见的打字机的效果。
当然,上面这些只是实现一个简单聊天机器人的功能;看起来很简单,实现起来也很简单,但聊天机器人真的有那么简单吗?
聊天机器人的应用场景最常见的就是智能客服,但思考一下实现一个能够满足企业需求的智能客服真的有这么简单吗?
首先使用大模型实现智能客服要面临着大模型存在的几个问题,首先就是知识不足的问题;假如你们公司是一个做传统制造的企业,如果只是使用第三方大模型服务商提供的能力,能满足你们的需求吗?简单来说,大模型能理解你们的行业内的知识吗?
答案当然是否定的。
因此,面临着这种知识不足的问题,应该怎么解决?Ok,如果对RAG技术有了解的人可能会说,这个简单直接用RAG技术就能解决这个问题了。
但首先使用RAG技术打造一个你们行业内的知识库系统,难度大不大?其次,如果是医疗,高精尖的企业生产,在这种场景下不能有一丝一毫的错误;任何微小的错误都可能引起人命关天的事故,那么这个问题应该怎么解决?
毕竟大模型目前为止还无法做到完全的正确性,甚至很多时候都会抽风。
其次,如果客户想了解一些当前市面上最新的信息,你的智能客服是否能及时主动的搜索网络中的消息,还是说要人工每天收集消息输入到你的知识库中?
其实对于这种问题有两种解决方案,第一种是异步方式,使用爬虫工具每天从网络中搜索信息并输入到知识库中;另一种是使用AI Agent技术,让大模型自己调用网络搜索工具实时搜索消息。
而这只是简单的聊天对话功能,如果想提供更好的体验方式,比如语音客服,是不是还需要切入TTS(TEXT-TO-SPEECH 文本转语音)功能;而且能够根据不同的角色切换不同的声音。
而且,在某些场景下还可以把AIGC的能力集成到智能客服中,比如说帮用户梳理文档,设计流程,以及提供部分案例等。
因此,一个简单的聊天机器人远远没有看到的那么简单,其背后可能需要一个庞大的系统在做支撑。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓