一、前言
最近刷技术圈,满眼都是 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的基础上进行二次开发的框架),学习一门技术最好是从官网开始,所以这里我们到官网上查看相关资料。地址如下:
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 {
@Resource
private ChatClient client;
@GetMapping("/chat")
public String chat(String message) {
return client.prompt(message).call().content();
}
}
4、运行结果
至此我们已经简单的完成了Springboot对接deepseek,是不是比想象中要容易的多?
五、小结
作为学习AI的第一篇文章,我们只是简单的了解了一下AI相关的最基础的名词,同时对接了DeepSeek本文几乎没有任何难度。后续的文章将会深入讲解,首先会在本地部署deepseek,从而减少一直调用线上模型而产生的费用,也会针对高级的用法进行讲解,希望对你有所帮助。