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{staticListHashMapString,StringconversationnewArrayList();首先声明公共类MAgent并实现三个接口然后声明一个静态变量用于存储对话历史的列表。接下来我们来编写主方法publicstaticvoidmain(String[]args){try{ScannerscannewScanner(System.in);while(true){System.out.print(我:);Stringlienscan.nextLine();System.out.println();newMAgent().agent(lien);}}catch(Exceptione){thrownewRuntimeException(e);}}首先写出程序入口点然后开始编写try模块捕获可能的异常然后开始创造对象用于读取控制台输入接着编写无限循环持续接收用户输入接下来输出“我”然后读取用户输入的一整行内容然后创建MAgent实例并调用agent内容接下来捕获异常并抛出运行时的异常。接下来是关于API的配置staticStringAPI_KEYdeepseek的密钥需要自己去官网申请;staticStringURLhttps://api.deepseek.com/chat/completions;这两行代码都是静态变量它们的作用分别是保存API密钥和保存API端点URL。然后我们编写agent方法代码如下publicvoidagent(Stringinput)throwsException{Stringprompt 用户问题:%s 规则 1.要【检查/读取/修改桌面代码】 输出代码检查文件名.后缀 例代码检查Hello.java 2.要【检查/读取/修改当前工程代码】 输出代码检查-工程文件名.后缀 例代码检查-工程Hello.java 3. 否则直接正常回答问题不要加任何多余格式 只按要求输出不要解释。 .formatted(input);Stringresponsechat(prompt);System.out.println(response:response);HashMapString,StringaiMsgnewHashMap();aiMsg.put(role,assistant);aiMsg.put(content,response);conversation.add(aiMsg);if(response.startsWith(代码检查)){String[]strArrresponse.split();Stringpath自己的代码文件路径strArr[1];codeCheck(path);}if(response.startsWith(代码检查-工程)){String[]strArrresponse.split();Stringpath自己的代码文件路径strArr[1];codeCheck(path);}}这串代码的作用是实现IAgent接口的agent方法首先我们定义一个prompt方法用来使用文本块定义提示模板文本块的结尾处使用formatted方法插入用户输入然后调用chat方法获取AI响应然后再输出AI响应接下来创建HashMap用来存储AI消息然后设置角色为助手和设置内容为AI响应接下来将消息添加到对话历史如果响应以“代码检查”开头那么按冒号分割响应然后构建文件路径看然后调用codeCheck方法检查代码如果响应以“代码检查-工程”开头和上面的方式一样。这是上半部分还剩下codeCheck方法和chat的方法这两个方法放到下次来说。