当前位置: 首页 > article >正文

Spring AI零起点搭建AI应用

对于从零开始使用Spring AI搭建AI应用并调用Ollama,以下是一个详细的步骤指南:

一、环境准备

  1. 安装Java开发工具:
    • 确保安装了JDK 17或更高版本。
    • 安装并配置好IDE(如IntelliJ IDEA、Eclipse等)。
  2. 配置Maven或Gradle:
    • Maven和Gradle是Java项目常用的构建工具,用于管理依赖和构建项目。确保已经安装并配置好了其中一个。
  3. 模型安装:
    • 详细安装步骤:安装步骤

二、创建Spring Boot项目

  1. 使用Spring Initializr创建项目:
    • 访问Spring Initializr网站。
    • 选择项目构建工具(Maven或Gradle)、Java版本(17或更高)、Spring Boot版本(3.x或更高)。
    • 添加必要的依赖项,如Spring Web。
  2. 手动添加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

  1. 启动大模型:
    • 使用ollam启动大模型,详细见:大模型。
  2. 配置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应用代码

  1. 创建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();
    }
}
  1. 配置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();
    }
}

五、测试与部署

  1. 启动应用:
    • 在IDE中运行Spring Boot应用,或者通过命令行使用mvn spring-boot:run(对于Maven项目)或./gradlew bootRun(对于Gradle项目)来启动应用。
  2. 测试API:
    • 使用Postman或其他API测试工具,向/api/v1/ollama/chat?msg=name端点发送GET请求,并在请求体中提供prompt参数。
    • 检查响应是否包含预期的AI生成内容。
  3. 部署到生产环境:
    • 当应用满足需求后,可以将其部署到生产环境,为更多用户提供服务。
    • 部署时需要注意安全性问题,如保护API Key不被泄露。

注意事项

  • 由于Ollama是一个相对较新的AI服务,其SDK和API可能会频繁更新。因此,在实际开发过程中,需 要定期查看Ollama的官方文档以获取最新的信息。
  • 在调用Ollama服务时,需要注意API的调用频率和限制。
  • 考虑到AI服务的计算资源和成本问题,需要合理设计应用的架构和逻辑,以优化性能和降低成本。

http://www.kler.cn/a/472674.html

相关文章:

  • spring:xml声明bean的多种方式。
  • 电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)
  • Python —— 常用的字符串方法
  • STM32-笔记39-SPI-W25Q128
  • python matplotlib.pyplot中绘制带文字标注的箭头,使其指向某一特定数据点
  • 使用SpringBoot-data-mongodb操作MongoDB
  • 总结2024,迎接2025
  • 一套极简易的直流无刷电机(Deng FOC)开发套件介绍
  • 企业开通部署 Azure OpenAI 流程:如何创建一个AI聊天机器人
  • 【深度学习基础】线性神经网络 | 线性回归的简洁实现
  • 单片机死机问题处理
  • (2023|NIPS,LLaVA-Med,生物医学 VLM,GPT-4 生成自指导指令跟随数据集,数据对齐,指令调优)
  • 简易CPU设计入门:算术逻辑单元(一)
  • 技术选型深度解析:Qt、PyQt与Vue在界面开发中的权衡与抉择
  • Linux 文件的特殊权限—ACL项目练习
  • 协方差矩阵
  • 网络设备安全
  • allure报告修改默认语言为中文
  • 爬虫学习记录
  • STM32-笔记38-I2C-oled实验