0


SpringAI + 智谱

1.智谱AI

网站 : https://bigmodel.cn/overview 智谱AI开放平台 (bigmodel.cn)

1.1.介绍

智谱 AI 是一家中国的人工智能公司,成立于 2019 年 6 月,总部位于北京。公司致力于打造认知智能大模型,专注于做大模型的中国创新。

智谱 AI 具有以下特点和优势:

  • 全链路自主可控:实现了大模型生成 AI 的全链路自主可控,自研了具有完全知识产权的预训练框架 GLM,并自建训练平台。
  • 强大的技术实力:2022 年合作研发了中英双语千亿级超大规模预训练模型 GLM-130B,在斯坦福大学大模型中心的评测中表现优异。
  • 多样化的产品矩阵:拥有包括 AI 提效助手智谱清言、高效率代码模型 CodeGeeX、多模态理解模型 CogVLm 和文生图模型 CogView 等在内的 AIGC 模型及产品矩阵。
  • 广泛的应用场景:通过认知大模型链接物理世界的亿级用户,为千行百业带来持续创新与变革。
  • 开源开放:开源了部分模型,如 GLM-130B、CodeGeeX 等,促进了技术的共享和发展。

以下是一些关于智谱 AI 的最新动态:

  • 2024 年 1 月,智谱 AI 举办首届技术开放日,发布了新一代基座大模型 GLM-4。
  • 2024 年 7 月,智谱 AI 开源视频理解模型 CogVLM2-Video。

总的来说,智谱 AI 在人工智能领域具有一定的技术实力和影响力,其产品和技术在自然语言处理、计算机视觉等领域有着广泛的应用前景。

已经与 Spring AI 进行整合

1.2.获取API-KEY

注册智谱账号可以获取

查看位置 : https://bigmodel.cn/usercenter/apikeys 智谱AI开放平台 (bigmodel.cn)

1.3.项目依赖

创建 SpringBoot 项目中 选择 SpringWeb , AI

在pom.xml文件中增加

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId></dependency>

1.4.配置

spring:application:name: zhipuai
  ai:zhipuai:api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      base-url: https://open.bigmodel.cn/api/paas

server:port:9090

2.ZhiPuAiChatModel 对话

https://docs.spring.io/spring-ai/reference/api/chat/zhipuai-chat.html ZhiPu AI Chat :: Spring AI Reference

2.1.对话

controller 类

importorg.springframework.ai.chat.messages.UserMessage;importorg.springframework.ai.chat.model.ChatResponse;importorg.springframework.ai.chat.prompt.Prompt;importorg.springframework.ai.chat.prompt.PromptTemplate;importorg.springframework.ai.zhipuai.ZhiPuAiChatModel;importorg.springframework.ai.zhipuai.ZhiPuAiChatOptions;importorg.springframework.ai.zhipuai.api.ZhiPuAiApi;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;importjava.util.Map;@RestControllerpublicclassZhiPuChatController{@AutowiredprivateZhiPuAiChatModel chatModel;/**
     * 模型调用 : 最简
     * @param message
     * @return
     */@GetMapping("/zp/generate")publicMapgenerate(@RequestParam(value ="message", defaultValue ="中国的首都是哪里")String message){returnMap.of("generation", chatModel.call(message));}/**
     * 模型调用 prompt 设置对话属性
     * @param message
     * @return
     */@GetMapping("/zp/generatePrompt")publicMapgeneratePrompt(@RequestParam(value ="message", defaultValue ="中国的首都是哪里")String message){Prompt prompt =newPrompt(
                message ,ZhiPuAiChatOptions.builder().withModel(ZhiPuAiApi.ChatModel.GLM_4.getValue()).withTemperature(0.5f).withUser("用户id").build());String content = chatModel.call(prompt).getResult().getOutput().getContent();returnMap.of("generation", content );}/**
     * 模型调用 prompt 使用对话模板
     * @param message
     * @return
     */@GetMapping("/zp/generateMessage")publicMapgenerateMessage(@RequestParam(value ="message", defaultValue ="中国")String message){PromptTemplate promptTemplate =newPromptTemplate("{message}的首都是哪里?.",Map.of("message", message ));Prompt prompt = promptTemplate.create();String content = chatModel.call(prompt).getResult().getOutput().getContent();returnMap.of("generation", content );}}

2.2.流式输出

Spring AI中流式对话接口采用的是Spring WebFlux异步网络框架实现的.

2.2.1.controller

importorg.springframework.ai.chat.messages.UserMessage;importorg.springframework.ai.chat.model.ChatResponse;importorg.springframework.ai.chat.prompt.Prompt;importorg.springframework.ai.zhipuai.ZhiPuAiChatModel;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;importreactor.core.publisher.Flux;@RestControllerpublicclassZhiPuChatController{@AutowiredprivateZhiPuAiChatModel chatModel;/**
     * 模型调用 stream 流式输出
     * @param message
     * @return
     */@GetMapping(value ="/zp/generateStream", produces ="text/event-stream")publicFlux<ChatResponse>generateStream(@RequestParam(value ="message", defaultValue ="糖醋排骨怎么做")String message){var prompt =newPrompt(newUserMessage(message));return chatModel.stream(prompt);}}

2.2.2.前端页面

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><ahref="index.html">返回</a><br><divid="chat"></div><hr><textareaid="msg">如何玩五子棋</textarea><buttonid="btn"onclick="send()">发送</button></body><script>functionsend(){let msg = document.getElementById('msg').value;var source =newEventSource("http://localhost:9090/zp/generateStream?message="+ msg);
        source.onmessage=function(event){let innerText = document.getElementById('chat').innerText;
            document.getElementById('chat').innerText =   innerText +JSON.parse(event.data).result.output.content;};}</script></html>

这是一个简单的例子 更多的异常处理等需要进一步完善

3.ZhiPuAiImageModel

https://docs.spring.io/spring-ai/reference/api/image/zhipuai-image.html ZhiPuAI Image Generation :: Spring AI Reference

importorg.springframework.ai.image.ImagePrompt;importorg.springframework.ai.image.ImageResponse;importorg.springframework.ai.zhipuai.ZhiPuAiImageModel;importorg.springframework.ai.zhipuai.ZhiPuAiImageOptions;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassZhiPuImageController{@AutowiredprivateZhiPuAiImageModel zhiPuAiImageModel;@GetMapping("/zp/image")publicStringgenerate(@RequestParam(value ="message", defaultValue ="画一幅向日葵的图片")String message){ImageResponse response = zhiPuAiImageModel.call(newImagePrompt(
                        message,ZhiPuAiImageOptions.builder().withModel("cogview-3").build()));return response.getResult().getOutput().getUrl();}}

本文转载自: https://blog.csdn.net/yuanchun05/article/details/141238638
版权归原作者 春哥的魔法书 所有, 如有侵权,请联系我们删除。

“SpringAI + 智谱”的评论:

还没有评论