news 2026/7/9 7:03:30

AI编程助手(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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的方法,这两个方法放到下次来说。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 7:00:58

YOLOv8 与 Mask R-CNN 实例分割对比:COCO 数据集上 3 个关键指标实测

YOLOv8 与 Mask R-CNN 实例分割对比&#xff1a;COCO 数据集上 3 个关键指标实测 在计算机视觉领域&#xff0c;实例分割技术正逐渐成为工业界和学术界的热点。面对实际项目选型时&#xff0c;工程师们常常需要在速度和精度之间寻找平衡点。本文将以 COCO 数据集为基准&#xf…

作者头像 李华
网站建设 2026/7/9 6:58:05

基于json-render的流式表单渲染方案详细解析

需求背景&#xff1a;从纯文本问答到动态表单收集目前需要将借款等功能接入AI平台里&#xff0c;我们需要通过多轮问答的形式来搜集用户的意愿及具体信息。目前项目里并不支持表单渲染&#xff0c;用户只能在聊天框里一行行地打字回复。这种体验既低效&#xff0c;又容易导致数…

作者头像 李华
网站建设 2026/7/9 6:58:03

5分钟上手Frida:动态Hook Java方法透视Android应用内部逻辑

1. 项目概述&#xff1a;为什么选择Frida来“透视”一个简单的游戏&#xff1f;最近在跟一些刚入行移动安全的朋友交流&#xff0c;发现他们对手动逆向分析APK、读Smali代码有点发怵&#xff0c;觉得门槛高、见效慢。正好&#xff0c;我手头有一个经典的“猜数字”游戏APK&…

作者头像 李华
网站建设 2026/7/9 6:55:51

雀魂牌谱分析工具:数据驱动的麻将水平提升方案

雀魂牌谱分析工具&#xff1a;数据驱动的麻将水平提升方案 【免费下载链接】amae-koromo 雀魂牌谱屋 (See also: https://github.com/SAPikachu/amae-koromo-scripts ) 项目地址: https://gitcode.com/gh_mirrors/am/amae-koromo 雀魂牌谱屋是一款专为雀魂&#xff08;M…

作者头像 李华
网站建设 2026/7/9 6:54:31

第九届中国数字电源关键元器件应用创新峰会(华东站)

第九届中国数字电源关键元器件应用创新峰会&#xff08;华东站&#xff09; 核心智变 能效跃进 时间&#xff1a;2026年8月13日&#xff0c; 地点&#xff1a;苏州希尔顿酒店 主办单位&#xff1a;Big-Bit商务网&#xff0c; 协办单位&#xff1a;中国电源学会磁技术专业委员会…

作者头像 李华