JAVA实现人工智能,采用框架SpringAI

慈云数据 2024-05-01 技术支持 43 0

Spring AI介绍

Spring

AI是AI工程师的一个应用框架,它提供了一个友好的API和开发AI应用的抽象,旨在简化AI应用的开发工序,例如开发一款基于ChatGPT的对话应用程序

  • 项目地址:https://github.com/spring-projects-experimental/spring-ai
  • 文档地址:https://docs.spring.io/spring-ai/reference/

    目前该项目已经集成了OpenAI、Azure OpenAI、Hugging

    Face、Ollama等API。不过,对于集成了OpenAI接口的项目,只要再搭配One-API项目,就可以调用目前主流的大语言模型了。

    使用介绍

    在介绍如何使用Spring AI开发一个对话接口之前,我先介绍下ChatGPT应用的开发原理。

    首先,ChatGPT是OpenAI推出的一款生成式人工智能大语言模型,OpenAI为了ChatGPT能够得到广泛应用,向开发者提供了ChatGPT的使用接口,开发者只需使用OpenAI为开发者提供的Key,向OpenAI提供的接口地址发起各种形式的请求就可以使用ChatGPT。因此,开发一款ChatGPT应用并不是让你使用人工智能那套技术进行训练和开发,而是作为搬运工,通过向OpenAI提供的ChatGPT接口发起请求来获取ChatGPT响应,基于这一流程来开发的。

    第一种方式采用openai

    
        4.0.0
        
            org.springframework.boot
            spring-boot-starter-parent
            3.2.4
             
        
        com.example
        ai
        0.0.1-SNAPSHOT
        ai
        ai
        
            17
        
        
            
                
                    org.springframework.ai
                    spring-ai-bom
                    0.8.1-SNAPSHOT
                    pom
                    import
                
            
        
        
            
                org.springframework.boot
                spring-boot-starter
            
            
                org.springframework.boot
                spring-boot-starter-web
            
            
                org.springframework.boot
                spring-boot-starter-test
                test
            
            
                org.springframework.ai
                spring-ai-openai
            
            
                org.springframework.ai
                spring-ai-openai-spring-boot-starter
            
            
                org.springframework.ai
                spring-ai-ollama-spring-boot-starter
            
        
        
            
                spring-milestones
                Spring Milestones
                https://repo.spring.io/milestone
                
                    false
                
            
            
                spring-snapshots
                Spring Snapshots
                https://repo.spring.io/snapshot
                
                    false
                
            
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                
            
        
    
    

    application.yml

    spring:
      ai:
        openai:
          api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

    IndexService

    package com.example.service;
    public interface IndexService {
        String send(String msg);
    }
    

    IndexServiceImpl

    package com.example.service.impl;
    import com.example.service.IndexService;
    import org.springframework.ai.ollama.OllamaChatClient;
    import org.springframework.ai.openai.OpenAiChatClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    @Service
    public class IndexServiceImpl implements IndexService {
        @Autowired
        private OpenAiChatClient openAiChatClient;
        @Override
        public String send(String msg) {
    //        Prompt prompt = new Prompt(new UserMessage(msg));
    //        return openAiChatClient.stream(prompt);
              return openAiChatClient.call(msg);
        }
    }
    

    第二种方式采用Ollama

    Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进行API交互。Ollama

    是一个发布在GitHub上的项目,专为运行、创建和分享大型语言模型而设计,可以轻松地在本地启动和运行大型语言模型。

    Windows可以下载ollama,你可以用linux都行,我这里图方便

    https://ollama.com/download

    下载好了打开命令台 你可以自己选model

    https://ollama.com/library

    ollama run llama2-chinese
    

    然后yml配置

    spring:
      ai:
        ollama:
          base-url: http://127.0.0.1:11434
          chat:
            # 要跟你刚刚ollama run llama2-chinese 后面这个模块一模一样才行
            model: llama2-chinese
    

    IndexServiceImpl

    package com.example.service.impl;
    import com.example.service.IndexService;
    import org.springframework.ai.ollama.OllamaChatClient;
    import org.springframework.ai.openai.OpenAiChatClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    @Service
    public class IndexServiceImpl implements IndexService {
        @Autowired
        private OllamaChatClient ollamaChatClient;
        @Override
        public String send(String msg) {
    //        Prompt prompt = new Prompt(new UserMessage(msg));
    //        return ollamaChatClient.stream(prompt);
            return ollamaChatClient.call(msg);
        }
    }
    

    在这里插入图片描述

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon