原来spring也可以AI

慈云数据 2024-05-09 技术支持 31 0

最近大模型是相当的火,尤其是在自然语言处理(NLP)、图像识别语音识别等领域的应用,那对于工程同学来说应该如何接住这波破天的富贵呢?

在这里插入图片描述

想啥来啥,前段时间LangChain给我们整了一套钢铁战甲,让我们轻松奴架Javis。

LangChain

在这里插入图片描述

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。

LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源。但是LangChain是python开发的,对我等java开发来说不太方便。

哎…,spring最近推出了其AI项目,解了java同学的燃眉之急,来,一起看下spring是如何玩转AI的。

Spring AI

Spring AI是一个用于AI工程的应用程序框架。它的目标是将AI领域的Spring生态系统设计原则(如可移植性和模块化设计)应用到AI领域,并推动使用POJO作为应用程序的构建块。

spring-ai提供了对跨AI提供商的Chat、文本到图像和嵌入式模型的可移植API支持。支持同步和流API选项。还支持降级访问特定于模型的功能。

现在正式版本是0.8.1

Chat Models(模型支持)

  • OpenAI
  • Azure Open AI
  • Amazon Bedrock
    • Cohere’s Command
    • AI21 Labs’ Jurassic-2
    • Meta’s LLama 2
    • Amazon’s Titan
    • Google Vertex AI Palm
    • Google Gemini
    • HuggingFace - access thousands of models, including those from Meta such as Llama2
    • Ollama - run AI models on your local machine
    • MistralAI

      Text-to-image Models

      • OpenAI with DALL-E
      • StabilityAI

        Transcription (audio to text) Models

        • OpenAI
        • Embedding Models(embedding 算法)
        • OpenAI
        • Azure OpenAI
        • Ollama
        • ONNX
        • PostgresML
        • Bedrock Cohere
        • Bedrock Titan
        • Google VertexAI
        • Mistal AI

          Vector Databases(向量数据库

          Vector Store API 提供了跨不同提供商的可移植性,具有一种新颖的类似 SQL 的元数据过滤 API,保持可移植性。

          • Azure Vector Search
          • Chroma
          • Milvus
          • Neo4j
          • PostgreSQL/PGVector
          • PineCone
          • Redis
          • Weaviate
          • Qdrant

            Maven依赖

             
            			
            				org.springframework.ai
            				spring-ai-bom
            				0.8.1
            				pom
            				import
            			
            
            

            代码示例

            import org.springframework.ai.chat.ChatClient;
            import org.springframework.beans.factory.annotation.Autowired;
            import org.springframework.web.bind.annotation.GetMapping;
            import org.springframework.web.bind.annotation.RequestParam;
            import org.springframework.web.bind.annotation.RestController;
            import java.util.Map;
            @RestController
            public class SimpleAiController {
            	private final ChatClient chatClient;
            	@Autowired
            	public SimpleAiController(ChatClient chatClient) {
            		this.chatClient = chatClient;
            	}
            	@GetMapping("/ai/simple")
            	public Map completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
            		return Map.of("generation", chatClient.call(message));
            	}
            }
            

            Very simple

            附录

            examples-Simple HelloWorld

            Spring AI

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon