对于从零开始使用Spring AI搭建AI应用并调用Ollama,以下是一个详细的步骤指南:
一、环境准备
- 安装Java开发工具:
- 确保安装了JDK 17或更高版本。
- 安装并配置好IDE(如IntelliJ IDEA、Eclipse等)。
- 配置Maven或Gradle:
- Maven和Gradle是Java项目常用的构建工具,用于管理依赖和构建项目。确保已经安装并配置好了其中一个。
- 模型安装:
- 详细安装步骤:安装步骤
二、创建Spring Boot项目
- 使用Spring Initializr创建项目:
- 访问Spring Initializr网站。
- 选择项目构建工具(Maven或Gradle)、Java版本(17或更高)、Spring Boot版本(3.x或更高)。
- 添加必要的依赖项,如Spring Web。
- 手动添加Spring AI和Ollama依赖:
- 由于Spring AI和Ollama可能还未正式发布到Maven中央仓库,因此可能需要手动添加相关依赖。
- 在pom.xml(对于Maven项目)或build.gradle(对于Gradle项目)中添加Spring AI和Ollama的依赖项。注意,这里的依赖项可能需要从非官方仓库获取,或者等待官方发布。
maven:
<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>
.....
<!-- Spring AI -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-autoconfigure</artifactId>
<version>${spring-ai.version}</version>
</dependency>
三、配置Ollama API
- 启动大模型:
- 使用ollam启动大模型,详细见:大模型。
- 配置application.properties或application.yml:
- 在Spring Boot项目的application.properties或application.yml文件中添加Ollama API的配置。
spring.ai.ollama.base-url= http://localhost:11434
spring.ai.ollama.chat.options.model=<YOUR_OLLAMA_MODEL>
或者
spring:
profiles:
active: druid
elasticsearch:
uris: http://127.0.0.1:9200/ #请改成你自己的路径
ai:
ollama:
base-url: http://localhost:11434
embedding:
model: qwen2:0.5b
chat:
options:
temperature: 0.7
model: qwen2:0.5b
enabled: true
四、编写AI应用代码
- 创建Controller:
- 编写一个Spring MVC的Controller类,用于处理与Ollama的交互请求。
- 使用@RestController和@RequestMapping注解来定义控制器和请求路径。
- 注入OllamaClient(或其他Ollama服务客户端)来调用Ollama服务。
@RestController
@AllArgsConstructor
@RequestMapping("/api/v1/ollama")
public class OllamaController {
private final ChatClient chatClient;
**
* 文本
*/
@GetMapping("chat")
public String chat(@RequestParam(value = "msg", defaultValue = "") String msg) {
if (msg == null || msg.trim().isEmpty()) {
return "对话消息不能为空。";
}
return chatClient
.prompt()
.user(msg)
.call()
.content();
}
}
- 配置OllamaClient:
- 根据Ollama的SDK或API文档,配置OllamaClient的Bean。
- 这通常涉及到创建一个配置类,并使用@Bean注解来定义OllamaClient的Bean。
@Configuration
public class OllamaConfig {
/**
* 设定默认角色描述
*/
@Primary
@Bean
public ChatClient customerChatClient(ChatClient.Builder chatClientBuilder) {
// 配置文件中
String rolePrompt = """
你是一名经验丰富且极具想象力的著名玄幻小说作者,精通所有主流和非主流的文学风格,包括但不限于武侠、仙侠、奇幻、科幻、言情、历史和悬疑。
你熟悉小说创作的各个环节,掌握各类创作手法和最佳实践,例如人物塑造、情节设计、对话编写、环境描绘和心理刻画等。
""";
return chatClientBuilder
.defaultSystem(rolePrompt)
.defaultOptions(ChatOptions.builder().model("qwen2:0.5b").build())
.build();
}
}
五、测试与部署
- 启动应用:
- 在IDE中运行Spring Boot应用,或者通过命令行使用mvn spring-boot:run(对于Maven项目)或./gradlew bootRun(对于Gradle项目)来启动应用。
- 测试API:
- 使用Postman或其他API测试工具,向/api/v1/ollama/chat?msg=name端点发送GET请求,并在请求体中提供prompt参数。
- 检查响应是否包含预期的AI生成内容。
- 部署到生产环境:
- 当应用满足需求后,可以将其部署到生产环境,为更多用户提供服务。
- 部署时需要注意安全性问题,如保护API Key不被泄露。
注意事项
- 由于Ollama是一个相对较新的AI服务,其SDK和API可能会频繁更新。因此,在实际开发过程中,需 要定期查看Ollama的官方文档以获取最新的信息。
- 在调用Ollama服务时,需要注意API的调用频率和限制。
- 考虑到AI服务的计算资源和成本问题,需要合理设计应用的架构和逻辑,以优化性能和降低成本。