聊天智能体开发基础
如今AI已经能够在生活中的方方面面帮助我们我也想做一个为自己量身定做的智能体那么下面我就介绍一下如何创建一个小智能体。一、准备工作1.APIKey要在我们的项目中接入市面上的大模型APIKey是必不可少的下面我以deepseek为例介绍如何接入API访问DeepSeek API官网进入API开放平台左侧找到API Keys申请一个API此处注意一定要保存好你的Key我们后面会用到这样呢APIKey就申请好了在使用时我们要充值一下才可以使用。以上就是我们智能体开发的第一步。二、开发智能体我们需要准备好一个可以访问DeepSeek打模型的类封装好聊天方法其中包括有网络请求json数据参数解析再创建该类对象调用chat方法将我们再程序中输入的问题作为参数传给该方法就可以通过该方法的返回值获取DeepSeek的回复下面我直接给出大家这个项目的全部代码因为很多内容都是固定写法大家一定要仔细看代码中的注解可以帮助大家理解这个项目。importjava.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.nio.charset.StandardCharsets;importjava.util.Scanner;publicclassDeepSeekClient{privatefinalStringapiKey;//DeepSeek平台密钥privatefinalStringbaseUrl;//DeepSeek接口基础地址//构造方法使用默认官方接口地址publicDeepSeekClient(StringapiKey){//this(...) 专门用来调用本类中另一个重载的构造方法//要求必须写在构造方法第一行只能出现一次this(apiKey,https://api.deepseek.com/v1);}//构造方法自定义接口地址适配私有化部署/代理地址publicDeepSeekClient(StringapiKey,StringbaseUrl){this.apiKeyapiKey;this.baseUrlbaseUrl;}//简单对话publicStringchat(StringuserMessage)throwsIOException{StringrequestBodybuildRequestBody(userMessage);//1.拼装请求JSONStringresponsesendRequest(requestBody);//2.发送HTTP请求returnextractContent(response);//3.解析AI返回结果}//构建请求JSON(手动拼接)privateStringbuildRequestBody(StringuserMessage){//转义JSON字符串中的特殊字符StringescapedMessageuserMessage.replace(\\,\\\\).replace(\,\\\).replace(\n,\\n).replace(\r,\\r).replace(\t,\\t);return{\n \model\: \deepseek-chat\,\n \messages\: [\n {\role\: \user\, \content\: \escapedMessage\}\n ],\n \temperature\: 0.7,\n \max_tokens\: 1000\n};}//发送HTTP请求privateStringsendRequest(StringjsonBody)throwsIOException{//1.拼接完整接口地址基础地址对话接口路径URLurlnewURL(baseUrl/chat/completions);HttpURLConnectionconn(HttpURLConnection)url.openConnection();//2.设置请求头、请求方式conn.setRequestMethod(POST);conn.setRequestProperty(Content-Type,application/json);//告知接口请求体是JSONconn.setRequestProperty(Authorization,Bearer apiKey);//接口鉴权(固定格式)conn.setDoOutput(true);//开启输出流允许发送POST请求体conn.setConnectTimeout(30000);//连接超时30秒conn.setReadTimeout(60000);//读取响应超时60秒//3.把JSON请求体写入数据流发送给接口try(OutputStreamosconn.getOutputStream()){os.write(jsonBody.getBytes(StandardCharsets.UTF_8));}//4.判断响应状态码2xx成功4xx/5xx错误intresponseCodeconn.getResponseCode();InputStreaminputStream(responseCode200responseCode300)?conn.getInputStream():conn.getErrorStream();//5.读取接口返回的完整JSON字符串StringBuilderresponsenewStringBuilder();try(BufferedReaderreadernewBufferedReader(newInputStreamReader(inputStream,StandardCharsets.UTF_8))){Stringline;while((linereader.readLine())!null){response.append(line);}}conn.disconnect();//关闭连接//状态码异常抛出错误信息if(responseCode400){thrownewIOException(API Error (responseCode): response);}returnresponse.toString();}//从响应中提取contentprivateStringextractContent(Stringjson){// 查找 content: 后面的内容StringsearchKey\content\:\;intstartIndexjson.indexOf(searchKey);if(startIndex-1){// 尝试带空格的格式searchKey\content\: \;startIndexjson.indexOf(searchKey);}if(startIndex-1){return无法解析响应;}//截取content对应的文本内容startIndexsearchKey.length();intendIndexstartIndex;// 查找结束的引号注意处理转义while(endIndexjson.length()){charcjson.charAt(endIndex);//找到未被转义的双引号作为内容跟结束位置if(c(endIndex0||json.charAt(endIndex-1)!\\)){//endIndex 0,规避后面下标-1的报错break;}endIndex;}if(endIndexjson.length()){return无法解析响应;}Stringcontentjson.substring(startIndex,endIndex);// 还原转义字符恢复正常换行、引号returncontent.replace(\\n,\n).replace(\\r,\r).replace(\\t,\t).replace(\\\,\).replace(\\\\,\\);}publicstaticvoidmain(String[]args){StringapiKey你的apiKey;DeepSeekClientdscnewDeepSeekClient(apiKey);while(true){System.out.println(请输入你的问题);ScannerscnewScanner(System.in);Stringquestionsc.next();//调用chat方法try{Stringanswerdsc.chat(question);System.out.println(回复answer);}catch(IOExceptione){thrownewRuntimeException(e);}}}}可以看到我们现在的智能体还没有记忆功能每次提问都是新的一次问答那么接下来我们就来加上智能体的记忆功能。实现记忆的逻辑从第一次对话开始就将用户输入的问题以及模型的回答保存到本地在后续的提问中将这份数据与新问题重新上传这样大模型就知道你之前问的问题以及回复了。下面是实现记忆功能的代码publicstaticvoidmain(String[]args){StringapiKey你的apiKey;DeepSeekClientdscnewDeepSeekClient(apiKey);Stringmemory;while(true){Stringanswer;System.out.println(请输入你的问题);ScannerscnewScanner(System.in);Stringusermessagesc.next();memory用户问题usermessage-;Stringnewmessage历史记忆memory新问题usermessage;//调用chat方法try{answerdsc.chat(newmessage);}catch(IOExceptione){thrownewRuntimeException(e);}System.out.println(回复answer);memory模型回复answer;}可以看到现在这个聊天工具已经具有记忆功能。本次分享就到这里大家快去动手练起来吧

相关新闻

个人介绍及学习目标

个人介绍及学习目标

我是一名准大学生,正在学习编程,边学边探索未来专业方向和就业目标 我的编程目标是学会C语言,辅助将来工科专业学习(本人喜欢工科>计算机,但是如果C语言学习中发现自己很喜欢很擅长计算机的话也许会报计算机&#x…

2026/7/6 14:53:46 阅读更多 →
于 Simulink 的双向 DC-DC 变换器在恒压(CV)与恒流(CC)模式下的切换仿真

于 Simulink 的双向 DC-DC 变换器在恒压(CV)与恒流(CC)模式下的切换仿真

目录 一、 核心原理:双闭环控制与模式无缝切换 1. 双闭环控制架构 2. CC 与 CV 模式的切换逻辑 3. 防止“反复横跳”的滞回比较器 二、 Simulink 建模步骤(手把手) Step 1:搭建双向 Buck-Boost 主功率级 Step 2:构建双闭环控制器与 PI 参数整定 Step 3:实现 CC-C…

2026/7/6 14:51:44 阅读更多 →
YOLOv10模型改进-特定领域应用-第96篇:YOLOv10改进策略【特定领域应用】| YOLOv10在无人机巡检中的应用

YOLOv10模型改进-特定领域应用-第96篇:YOLOv10改进策略【特定领域应用】| YOLOv10在无人机巡检中的应用

一、本文介绍 本文记录的是YOLOv10在无人机巡检领域的应用。无人机巡检需要检测电力设施、道路状况、建筑物损伤等目标,YOLOv10凭借其高效的推理速度和准确的检测能力,成为无人机巡检领域的首选目标检测算法。 二、无人机巡检场景分析 2.1 检测目标 无人…

2026/7/6 14:45:39 阅读更多 →

最新新闻

如何用闲置安卓设备5步构建零成本家庭服务器?

如何用闲置安卓设备5步构建零成本家庭服务器?

如何用闲置安卓设备5步构建零成本家庭服务器? 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, …

2026/7/6 15:38:33 阅读更多 →
计算机Java毕设实战-基于前后端分离的病毒性疾病医药数据采集与分析系统的设计与实现 基于 SpringBoot 的冠状病毒靶标信息挖掘与数据整【完整源码+LW+部署说明+演示视频,全bao一条龙等】

计算机Java毕设实战-基于前后端分离的病毒性疾病医药数据采集与分析系统的设计与实现 基于 SpringBoot 的冠状病毒靶标信息挖掘与数据整【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/6 15:36:31 阅读更多 →
MultiOS-USB:一个U盘搞定所有操作系统安装与维护

MultiOS-USB:一个U盘搞定所有操作系统安装与维护

MultiOS-USB:一个U盘搞定所有操作系统安装与维护 【免费下载链接】MultiOS-USB Boot operating systems directly from ISO/WIM images 项目地址: https://gitcode.com/gh_mirrors/mu/MultiOS-USB 想象一下,您只需要一个U盘,就能随身携…

2026/7/6 15:36:31 阅读更多 →
Chatbox:打造你的AI工作站的终极桌面助手

Chatbox:打造你的AI工作站的终极桌面助手

Chatbox:打造你的AI工作站的终极桌面助手 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox 在AI技术飞速发展的今天,拥有一款功能强大的桌面AI助手已成为提升工作效率的关键。Chatbox作为…

2026/7/6 15:32:27 阅读更多 →
会议主题:{{主题}}

会议主题:{{主题}}

会议主题:{{主题}} 【免费下载链接】logseq A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: https://logseq.io/p/NX4mc_ggEV 项目地址: https://gitco…

2026/7/6 15:30:26 阅读更多 →
三步搞定跨平台端口转发:bore TCP隧道工具终极指南 [特殊字符]

三步搞定跨平台端口转发:bore TCP隧道工具终极指南 [特殊字符]

三步搞定跨平台端口转发:bore TCP隧道工具终极指南 🚀 【免费下载链接】bore 🕳 bore is a simple CLI tool for making tunnels to localhost 项目地址: https://gitcode.com/gh_mirrors/bo/bore 在现代开发中,你是否经常…

2026/7/6 15:28:25 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻