跳到主要内容

环境搭建

本章介绍如何搭建 Spring AI 开发环境,包括项目创建、依赖配置和基本设置。

系统要求

要求版本
JDK17+
Spring Boot3.4.x / 3.5.x
Maven3.6+ 或 Gradle 8+
Spring AI1.0.0+

创建项目

方式一:Spring Initializr

  1. 访问 start.spring.io
  2. 选择项目配置:
    • Project: Maven
    • Language: Java
    • Spring Boot: 3.4.x
    • Packaging: Jar
    • Java: 17
  3. 添加依赖:
    • Spring AI (选择所需模型提供商)
  4. 点击 Generate 下载项目

方式二:手动创建

Maven 配置

<?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.0</version>
<relativePath/>
</parent>

<groupId>com.example</groupId>
<artifactId>spring-ai-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-ai-demo</name>

<properties>
<java.version>17</java.version>
<spring-ai.version>1.0.0</spring-ai.version>
</properties>

<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring AI BOM -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<!-- OpenAI (根据需要选择) -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

Gradle 配置

plugins {
id 'java'
id 'org.springframework.boot' version '3.4.0'
id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

repositories {
mavenCentral()
}

dependencies {
implementation platform('org.springframework.ai:spring-ai-bom:1.0.0')

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
useJUnitPlatform()
}

模型提供商配置

Spring AI 支持多种模型提供商,根据需求选择配置:

OpenAI

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
# application.yml
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
base-url: https://api.openai.com # 可选,自定义 API 端点
chat:
options:
model: gpt-4o
temperature: 0.7

Ollama(本地模型)

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: llama3.2
options:
temperature: 0.7

Azure OpenAI

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
</dependency>
spring:
ai:
azure:
openai:
api-key: ${AZURE_OPENAI_API_KEY}
endpoint: ${AZURE_OPENAI_ENDPOINT}
chat:
options:
deployment-name: gpt-4

Anthropic Claude

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-anthropic-spring-boot-starter</artifactId>
</dependency>
spring:
ai:
anthropic:
api-key: ${ANTHROPIC_API_KEY}
chat:
options:
model: claude-3-5-sonnet-20241022

阿里云通义千问

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
</dependency>
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-plus

环境变量配置

方式一:系统环境变量

# Linux/macOS
export OPENAI_API_KEY=sk-your-api-key

# Windows (PowerShell)
$env:OPENAI_API_KEY="sk-your-api-key"

方式二:.env 文件

# .env
OPENAI_API_KEY=sk-your-api-key
ANTHROPIC_API_KEY=sk-ant-your-api-key

方式三:application.yml 引用

spring:
ai:
openai:
api-key: ${OPENAI_API_KEY:default-key} # 可设置默认值

向量数据库配置

PGVector

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-pgvector-store-spring-boot-starter</artifactId>
</dependency>
spring:
datasource:
url: jdbc:postgresql://localhost:5432/vectordb
username: postgres
password: postgres
ai:
vectorstore:
pgvector:
index-type: HNSW
distance-type: COSINE_DISTANCE
dimensions: 1536

Chroma

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-chroma-store-spring-boot-starter</artifactId>
</dependency>
spring:
ai:
vectorstore:
chroma:
client:
host: http://localhost:8000

Redis

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-redis-store-spring-boot-starter</artifactId>
</dependency>
spring:
data:
redis:
host: localhost
port: 6379
ai:
vectorstore:
redis:
uri: redis://localhost:6379
index: spring-ai-index
prefix: "doc:"

验证配置

创建测试控制器验证配置是否正确:

@RestController
@RequestMapping("/api/ai")
public class AiTestController {

@Autowired
private ChatClient chatClient;

@GetMapping("/test")
public String test() {
return chatClient.prompt()
.user("说'你好,Spring AI!'")
.call()
.content();
}
}

启动应用并访问 http://localhost:8080/api/ai/test,如果返回 AI 响应则配置成功。

常见问题

1. API Key 无效

Error: Invalid API Key

解决方案

  • 检查环境变量是否正确设置
  • 确认 API Key 未过期
  • 验证 API Key 格式正确

2. 网络连接失败

Error: Connection refused

解决方案

  • 检查网络连接
  • 如使用代理,配置代理设置
  • 对于国内用户,可能需要配置 API 代理
spring:
ai:
openai:
base-url: https://your-proxy-url.com

3. Ollama 连接失败

Error: Cannot connect to Ollama

解决方案

  • 确保 Ollama 服务已启动:ollama serve
  • 检查端口是否正确(默认 11434)
  • 拉取所需模型:ollama pull llama3.2

4. 依赖冲突

Error: NoSuchMethodError / ClassNotFoundException

解决方案

  • 使用 Spring AI BOM 管理版本
  • 检查依赖树:mvn dependency:tree
  • 排除冲突依赖

小结

本章我们学习了:

  1. 项目创建:使用 Spring Initializr 或手动配置
  2. 依赖管理:配置 Spring AI BOM
  3. 模型配置:OpenAI、Ollama、Azure 等多种提供商
  4. 向量数据库:PGVector、Chroma、Redis 等配置
  5. 问题排查:常见配置问题解决方案

下一步