对于从零开始使用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: druidelasticsearch:uris: http://127.0.0.1:9200/ #请改成你自己的路径ai:ollama:base-url: http://localhost:11434embedding:model: qwen2:0.5bchat:options:temperature: 0.7model: qwen2:0.5benabled: 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@Beanpublic 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服务的计算资源和成本问题,需要合理设计应用的架构和逻辑,以优化性能和降低成本。