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

Java程序员学AI(一)

一、前言

最近刷技术圈,满眼都是 GPT、DeepSeek、QWen 这些 AI 名词。看着同行们在群里聊 AI 写代码、做数据分析,我这个摸了 Java 老程序员突然慌了 —— 再不出手,怕是真要被时代落下了!

作为一个 Java 死忠粉,学 AI 自然也想找 Java 的打开方式。翻遍全网资料,发现还真有不少 Java+AI 的宝藏玩法!像用 Java 调用 AI 模型、把 AI 功能封装成 Spring Boot 服务,甚至还有 Deeplearning4j 这种专为 Java 打造的深度学习库。原来用熟悉的语言,也能玩转最潮的 AI 技术!

于是决定开个博客,记录下自己从 Java 码农转型 AI 探索者的全过程。这里没有晦涩的理论,只有踩过的坑、总结的经验

二、AI基础概念

在软件领域,统一名词一定是一个非常重要的事儿,只有理解了名词才能更好的学习,下面我整理一下AI相关的名词。

1、LLM

LLM是Large Language Model的简称,翻译过来也就是大语言模型。这里的大指的是参数量很大,例如一些模型名称为 deepseek 32b,意思就是用 32billion(320亿)参数训练出来的模型。(作为应用开发,我们不会涉及如何训练模型,这个对笔者来说有点超纲了)

2、Prompt

提示词,所谓的提示词简单的来说就和大模型交互的指令。一句简单的 “帮我生成一份标题”也可以认为是提示词。提示词质量的高低会直接影响大模型生成的内容。以至于有专门的提示词工程,去编写不同的提示词。

3、Token

这里的Token和我们常说的Web的Token不是一会儿事儿,后者更多的是一种身份凭证,例如登录后获取的凭证用于后续调用接口,而大模型中的Token指的是大模型处理文本时的基本单元,就像 Java 代码里的一个个单词、符号和标点,把句子拆解成计算机能理解的小块。

4、Embedding

直接翻译过来就是嵌入,我们知道大模型可以理解我们的自然语言,靠的就是向量的相似性搜索。简单的来大模型会吧句子A向量化后的结果进行匹配,从而理解含义。这里的向量化就是嵌入,例如 “今天天气不错”这句话,如果想要被理解就需要被向量化,所谓的向量化就是把这句话通过一定的算法转换成 一个浮点数数组。例如 [0.1251564,0.25793,0.6465464,…]

三、直接调用API

其实大模型的调用远比你想象的要简单,在刚接触大模型的时候觉得大模型很高深,不知道怎么学。确实大模型本身是比较复杂的,对于我们来说是一个黑盒,但是他的使用是相对接单的,我们只需要把他当成一个服务器即可。这里我们以deepseek为例

1、申请DeepSeek的ApiKey

(1)进入deepseek官网,点击右上角的“API 开放平台”

(2)找到菜单 Api keys,创建并保存key

2、使用Curl或者Postman调用

(3)用Postman或者直接crul即可调用

curl https://api.deepseek.com/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer <换成自己的API key>" \-d '{"model": "deepseek-chat","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello!"}],"stream": false}'

或者使用Postman调用

四、集成Springboot

相信每一个Java开发者都熟悉Springboot,Springboot也是我们最常用的框架,Spring官方也为我们提供了对应框架Spring AI (其实也是在Spring的基础上,或者说Springboot的基础上进行二次开发的框架),学习一门技术最好是从官网开始,所以这里我们到官网上查看相关资料。地址如下:

SpringAI 官网

1、完整的pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>21</java.version><spring-ai.version>1.0.0-RC1</spring-ai.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-deepseek</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
2、编写配置文件
spring:ai:deepseek:api-key: <替换成自己的AK>base-url: https://api.deepseek.com
3、编写示例代码
@RestController
@RequestMapping("/deepseek")
public class DeepSeekController {@Resourceprivate ChatClient client;@GetMapping("/chat")public String chat(String message) {return client.prompt(message).call().content();}
}
4、运行结果

至此我们已经简单的完成了Springboot对接deepseek,是不是比想象中要容易的多?

五、小结

作为学习AI的第一篇文章,我们只是简单的了解了一下AI相关的最基础的名词,同时对接了DeepSeek本文几乎没有任何难度。后续的文章将会深入讲解,首先会在本地部署deepseek,从而减少一直调用线上模型而产生的费用,也会针对高级的用法进行讲解,希望对你有所帮助。

六、未完待续

相关文章:

  • Linux(2)——shell原理及Linux中的权限
  • GLPK(GNU线性规划工具包)中建模语言MathProg的使用
  • MySQL 数据库备份与还原
  • Python训练营打卡 Day29
  • tomcat查看状态页及调优信息
  • 【数据结构】1-3 算法的时间复杂度
  • 掘金欧洲宠物经济新蓝海:比利时天然宠粮市场爆发与跨境新机遇
  • OpenSearch入门:从文档示例到查询实战
  • Linux `touch` 命令深度解析与高阶应用指南
  • 【Linux】第十七章 归档和传输文件
  • 大学量化投资课程
  • 深度剖析:YOLOv8融入UNetv2 SDI模块的性能提升之旅
  • 出现 Uncaught ReferenceError: process is not defined 错误
  • 《算法导论(第4版)》阅读笔记:p83-p85
  • MouseDown,MouseUp,LostMouseCapture的先后顺序
  • 【推荐】新准则下对照会计报表172个会计科目解释
  • Tomcat简述介绍
  • 面试题总结一
  • 静态网站部署:如何通过GitHub免费部署一个静态网站
  • 第二章:安卓端启动流程详解与疑难杂症调试手册
  • 视频丨习近平在河南洛阳市考察调研
  • 上海浦江游览南拓新航线首航,途经前滩、世博文化公园等景点
  • 推动粒子治疗更加可及可享!龚正调研上海市质子重离子医院
  • 苏丹港持续遭无人机袭击,外交部:呼吁各方保护民用设施和平民安全
  • 外交部:巴基斯坦副总理兼外长达尔5月19日至21日访华
  • 浙江美术馆馆长人民日报撰文:打开更辽阔的审美场域