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,从而减少一直调用线上模型而产生的费用,也会针对高级的用法进行讲解,希望对你有所帮助。