Java程序员从0学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 {

    @Resource
    private ChatClient client;


    @GetMapping("/chat")
    public String chat(String message) {
        return client.prompt(message).call().content();
    }
}

4、运行结果

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

五、小结

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

六、未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值