当前位置: 首页 > news >正文

AI编程助手(上)

前言:

我来介绍一下AI编程助手,我们可以自己编写一个程序来接入并使用AI,我就拿deepseek来进行展示。

正文:

我们需要先去deepseek官网申请一个专属的API密钥,将这个密钥进行保存,写代码的时候会用到这个密钥。接下来我们就可以编写程序了。
首先,我们先编写三个接口,将它们分别命名为:IAgent、IChat、ICodeCheck,然后先编写IAgent,代码如下:

publicinterfaceIAgent{voidagent(Stringinput)throwsException;}

这串代码意思为:首先我们需要声明公共接口IAgent,接着,我们需要定义一个方法,接收字符串参数,可能抛出异常。
IChat的代码:

publicinterfaceIChat{Stringchat(Stringprompt)throwsException;}

代码意思是首先声明公共接口IChat,接着,定义一个返回字符串的方法,接收提示参数,可能抛出异常。
ICodeCheck的代码:

publicinterfaceICodeCheck{voidcodeCheck(Stringpath)throwsException;}

代码意思是先声明公共接口ICodeCheck,接着定义一个方法,接收路径参数,可能抛出异常。
然后我们正式开始编写代码,首先,我们先创造一个Java文件,命名为MAgent.java,然后我们开始导入库文件,需要导入如下的库文件:

importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.ObjectMapper;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.net.URI;importjava.net.http.HttpClient;importjava.net.http.HttpRequest;importjava.net.http.HttpResponse;importjava.util.*;

然后我们需要声明类和全局变量,代码如下:

publicclassMAgentimplementsIAgent,IChat,ICodeCheck{staticList<HashMap<String,String>>conversation=newArrayList<>();

首先声明公共类MAgent并实现三个接口,然后声明一个静态变量,用于存储对话历史的列表。
接下来我们来编写主方法:

publicstaticvoidmain(String[]args){try{Scannerscan=newScanner(System.in);while(true){System.out.print("我:");Stringlien=scan.nextLine();System.out.println();newMAgent().agent(lien);}}catch(Exceptione){thrownewRuntimeException(e);}}

首先写出程序入口点,然后开始编写try模块,捕获可能的异常,然后开始创造对象,用于读取控制台输入,接着编写无限循环,持续接收用户输入,接下来输出“我”,然后读取用户输入的一整行内容,然后创建MAgent实例并调用agent内容,接下来捕获异常,并抛出运行时的异常。
接下来是关于API的配置:

staticStringAPI_KEY="deepseek的密钥(需要自己去官网申请)";staticStringURL="https://api.deepseek.com/chat/completions";

这两行代码都是静态变量,它们的作用分别是保存API密钥和保存API端点URL。
然后我们编写agent方法,代码如下:

publicvoidagent(Stringinput)throwsException{Stringprompt=""" 用户问题:%s 规则: 1.要【检查/读取/修改桌面代码】 输出:代码检查:文件名.后缀 例:代码检查:Hello.java 2.要【检查/读取/修改当前工程代码】 输出:代码检查-工程:文件名.后缀 例:代码检查-工程:Hello.java 3. 否则直接正常回答问题,不要加任何多余格式 只按要求输出,不要解释。 """.formatted(input);Stringresponse=chat(prompt);System.out.println("response:"+response);HashMap<String,String>aiMsg=newHashMap<>();aiMsg.put("role","assistant");aiMsg.put("content",response);conversation.add(aiMsg);if(response.startsWith("代码检查")){String[]strArr=response.split(":");Stringpath="自己的代码文件路径"+strArr[1];codeCheck(path);}if(response.startsWith("代码检查-工程")){String[]strArr=response.split(":");Stringpath="自己的代码文件路径"+strArr[1];codeCheck(path);}}

这串代码的作用是实现IAgent接口的agent方法,首先,我们定义一个prompt方法用来使用文本块定义提示模板,文本块的结尾处使用formatted方法插入用户输入,然后调用chat方法获取AI响应,然后再输出AI响应,接下来创建HashMap用来存储AI消息,然后设置角色为助手和设置内容为AI响应,接下来将消息添加到对话历史,如果响应以“代码检查”开头,那么按冒号分割响应,然后构建文件路径看,然后调用codeCheck方法检查代码,如果响应以“代码检查-工程”开头,和上面的方式一样。
这是上半部分,还剩下codeCheck方法和chat的方法,这两个方法放到下次来说。

http://www.jsqmd.com/news/1152741/

相关文章:

  • 5个实战技巧带你快速掌握STM32嵌入式开发:从零到工业级控制系统
  • 进销存软件到底怎么影响小微企业的经营效率
  • 【大模型】跟着张量走一遍 VLM:图像如何变成 LLM 的 token?|多模态大模型专栏③
  • League-Toolkit 终极指南:英雄联盟自动化助手配置与使用完全攻略
  • 国家中小学智慧教育平台电子课本解析工具:数字化教学资源的高效管理方案
  • tmgm mt5快讯:人工智能领域多项动态集中出现,技术应用与政策场景持续推进
  • 同一个模型,只改“外壳“性能狂飙22倍,Agent的瓶颈根本不在模型本身
  • 电商竞品监控工具:不同场景的实用选择
  • 严控原料临期风险,锁住企业经营利润!
  • L9958与PIC24FJ128GA310直流电机控制方案详解
  • FRED应用:TMT MOBIE成像光谱仪的概念设计阶段杂散光分析
  • 【大数据毕业设计】基于分布式大数据的养老院服务质量分析系统的设计与实现 基于 Hadoop 的养老院入住数据挖掘与研判系统(源码+文档+远程调试,全bao定制等)
  • 文本相似度工程:余弦相似度只是开始,不是终点
  • 自动售货机点位选不对?三步教你找到黄金位置~YH
  • OpenWrt网络加速终极指南:Turbo ACC插件让你的路由器性能翻倍
  • 计算机毕业设计之基于Android的交通查询系统
  • 技术深度解析:如何实现AI绘画工作流的架构革新
  • Qt5.6.2 + SQLite 纯代码入门实战:从零搭建数据库管理小工具
  • 2026 AI短视频全链路实战教程:1天批量生产10条爆款视频,普通开发者也能实现内容创业!
  • SWIDERM身体护理怎么样
  • 3分钟掌握m3u8视频下载神器:跨平台M3U8下载工具完全指南
  • 南宁闲置怎么处理更安心?认准本地二奢实体老店
  • 电商日报分析助手 各类运营与内容工具分环节使用思路分享
  • 踩坑日记:解决 VS Code ESLint 插件 `Cannot find native binding` 终极指南
  • 【大模型】对齐机制(上):MLP vs Q-Former,视觉特征到底怎么塞进 LLM?|多模态大模型专栏④
  • Python 程序员转行 AI 避坑指南:如何从“写死逻辑”走向“拥抱概率”?
  • 东莞仿花岗岩透水砖销售厂家
  • 高斯过程回归 3 大核心挑战:计算复杂度 O(n³)、核函数选择、超参数优化
  • 混合办公与多云时代,第一线 DYXnet 为企业构建更稳健的云网安全体系
  • IC、ASIC、SoC、MPU、MCU 5大芯片选型指南:从功耗、成本到开发周期对比