java项目中接入大模型,简历必备

boyanx6个月前技术教程43

spring-ai

我们使用spring-ai 接入大模型

spring-ai支持的组件有

chatclient

负责和大模型进行交互,发送模型参数,解析模型参数的重要框架

chatclient 如何和模型进行一个交互的方式

我们说一个简单案例,比如现在模型使用c++语言开发,java无法直接调用c++方法发送请求,

但是这个时候有人写了一个用c++写了一个api,使用java特定的接口,就可以实现调用的方式

,这个就是模型交互的方式

发送模型参数是什么?

模型参数

就是我们每次对话发送的文字,在模型中就是一次token,模型开始进行分析,推理


解析模型参数

在返回信息中,返回数据的格式并不是我们直接想要的信息

比如大模型返回的信息

{
token:{}
model:[]
data:[]
msg:{}
}

有很多我们是不需要的信息也给我们返回出来,这个我们需要一个格式化处理器,来进行解析模型的参数信息,拿到我们想要的答案


chat-model对话模型

每个模型对话的方式都是不同

比如,deepseek,ollma,qwen,文心一言,百问一心

每个模型的接口参数不同,我们需要使用不同接口调用,但是chat model 已经给我封装好工具,我们直接使用就可以

比如

我们使用文本大模型的方式

输出文本的方式

 @Autowired
    private ChatModel chatModel;
    
     /**
     * 输出文本模型
     * @param query
     * @return
     */
    @GetMapping("/simple/text")
    public String simpleChatText(String query) {
        ChatResponse call = chatModel.call(new Prompt(query));
        return call.getResult().getOutput().getContent();
    }

输出图片的方式

  /**
     * 生产图片模型
     * @param query
     * @return
     */

    @GetMapping("/simple/image")
    public String simpleChatImage(String query) {
        ImageResponse call = imageModel.call(new ImagePrompt(query, ImageOptionsBuilder.builder().build()));
        String url = call.getResult().getOutput().getUrl();
        return url;
    }

录音转文字的方式

/**
     * 录音转文字
     * @param multipartFile
     * @return
     * @throws IOException
     */
    @PostMapping("/simple/audio")
    public String simpleChatAudio(@RequestParam("file")MultipartFile multipartFile) throws IOException {
        //加载系统文件
//        Resource audioResouce = new FileSystemResource("E:/Users/hp/Downloads/1.mp3");
        //resoues加载文件
//        Resource audioResouce = new ClassPathResource("1.mp3");

//        Resource audioResouce = new ByteArrayResource(multipartFile.getBytes());

        // 1. 创建临时文件
        File tempFile = File.createTempFile("upload-", ".tmp");
        tempFile.deleteOnExit(); // 程序退出时自动删除

        // 2. 将上传的文件写入临时文件
        multipartFile.transferTo(tempFile);

        // 3. 使用 FileSystemResource 包装临时文件
        Resource audioResource = new FileSystemResource(tempFile);

        if (!audioResource.exists()){
            return "文件不存在";
        }
        AudioTranscriptionResponse call = audioTranscriptionModel.call(new AudioTranscriptionPrompt(audioResource));
        return call.getResult().getOutput();
    }


嵌入模型

什么是嵌入模型

就是我怎么输入参数的时候,embedding model 会把输入的文字转化成向量,俩个向量直接比较相似度,如果相似度接近,就说明俩个向量存在关系,模型就会开始进行推理分析,输出信息


提示词prompt

提示词在模型分为

系统提示词

SystemMessage

用户提示词

userMessage

系统提示词告诉系统应该输出什么信息

比如一个用户提问

请教我如果赚到100w

这个时候我们必须给用户设置,在合理合法的情况下输出内容

要不然这个时候,就会输出负面信息

用户提示词是什么

用户输入的内容,用户输入的提示词,应该清晰,准确,容易理解,模型输出答案会更加准确


文档检索

文档检索就是在大模型知识库查询相关信息,

格式化输出

按照指定格式输出json,xml,等格式信息

向量存储

用户输入的信息会转化成向量进行存储

入门指南

导入依赖

<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
			<version>1.0.1-beta6</version>
		</dependency>

配置信息

spring:
  ai:
    dashscope:
      api-key: "sk-xxxxxxxxxxxxx"

开始模型对话


    /**
     * 输出文本模型
     * @param query
     * @return
     */
    @GetMapping("/simple/text")
    public String simpleChatText(String query) {
        ChatResponse call = chatModel.call(new Prompt(query));
        return call.getResult().getOutput().getContent();
    }


申请key的地址信息

https://help.aliyun.com/zh/model-studio/get-api-key?spm=4347728f.6b87a73.0.0.1bb93e7fdGh3rk

申请key的地址信息

标签: js 上传文件

相关文章

网络安全之对文件上传的思考

在web渗透中,最简单直接的方式就是文件上传。但是不做任何检测,直接getshell的现在已经很少了.我在平时的授权测试中,遇到的大多数都是对上传的文件内容,格式等检测的比较多的按前端到后端绕过顺序分...

深入掌握 OSS:最完美的 OSS 上传方案!

文件上传是常见需求,一般我们不会把文件直接上传到应用服务器,因为单台服务器存储空间是有限的,不好扩展。我们会用单独的 OSS (Object Storage Service)对象存储服务来上传下载文件...

2小时快速搭建一个高可用的IM系统

“笔者 2019 年参加了一次 Gopher 大会,有幸听探探的架构师分享了他们 2019 年微服务化的过程。图片来自 Pexels本文快速搭建的 IM 系统也是使用 Go 语言来快速实现的,这里先和...

nginx配置文件详解

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django, Flask, et...

采用Oracle OSB总线进行服务注册和接入

做大型企业内部业务系统集成的应该都知道,Oracle SOA套件当前是应用广泛的一个商业集成产品套件,其中包括了OSB服务总线, BPEL业务流程引擎,BPM业务流程管理,ODI大数据服务集成,MFT...

十分钟教会你用 docker 创建 jmeter 容器,实现性能测试

我们都知道,jmeter可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用jmeter。docker是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到容器中,就可以构建...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。