通义千问AI模型对接飞书机器人-模型配置(2-1)

news2024/11/14 15:43:47

一 背景

根据业务或者使用场景搭建自定义的智能ai模型机器人,可以较少我们人工回答的沟通成本,而且可以更加便捷的了解业务需求给出大家设定的业务范围的回答,目前基于阿里云的通义千问模型研究。

二 模型研究

参考阿里云帮助文档:

https://help.aliyun.com/document_detail/2784263.html

https://help.aliyun.com/document_detail/2784278.html?spm=a2c4g.2779977.0.0.41c247904gVRRu

https://help.aliyun.com/zh/model-studio/user-guide/model-tools/?spm=a2c4g.11186623.0.0.451d5f17l5DF7U

1.通过阿里云百炼平台构建我们的应用模型

2.搭建我们的数据中心&知识库

3.创建应用,关联知识库文档做模型

1、模型概览

模型服务模型名称模型描述备注
通义千问qwen-longqwen-long是在通义千问针对超长上下文处理场景的大语言模型,支持中文、英文等不同语言输入,支持最长1000万tokens(约1500万字或1.5万页文档)的超长上下文对话。配合同步上线的文档服务,可支持word、pdf、markdown、epub、mobi等多种文档格式的解析和对话。
qwen-turbo通义千问超大规模语言模型,支持中文、英文等不同语言输入。百炼平台支持,智能思考度偏低响应较快
qwen-plus通义千问超大规模语言模型增强版,支持中文、英文等不同语言输入。百炼平台支持,兼顾智能思考跟响应的
qwen-max通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。随着模型的升级,qwen-max将滚动更新。如果希望使用固定版本,请使用历史快照版本。当前qwen-max模型与qwen-max-0428快照版本等价,均为最新版本的qwen-max模型,同时也是当前通义千问2.5产品版本背后的API模型。百炼平台支持,智能思考度较高响应较慢
qwen-max-0428通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2024年4月28号的历史快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。
qwen-max-0403通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2024年4月3号的历史快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。
qwen-max-0107通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2024年1月7号的历史快照稳定版本,仅推荐特定需求客户访问。
qwen-max-1201通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2023年12月1号的历史快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。
qwen-max-longcontext通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。

通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。随着模型的升级,qwen-max将滚动更新。如果希望使用固定版本,请使用历史快照版本。当前qwen-max模型与qwen-max-0428快照版本等价,均为最新版本的qwen-max模型,同时也是当前通义千问2.5产品版本背后的API模型。百炼平台支持,智能思考度较高响应较慢
qwen-max-0428通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2024年4月28号的历史快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。
qwen-max-0403通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2024年4月3号的历史快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。
qwen-max-0107通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2024年1月7号的历史快照稳定版本,仅推荐特定需求客户访问。
qwen-max-1201通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。该模型为qwen-max的2023年12月1号的历史快照稳定版本,预期维护到下个快照版本发布时间(待定)后一个月。
qwen-max-longcontext通义千问千亿级别超大规模语言模型,支持中文、英文等不同语言输入。

2、AI应用步骤搭建

Step 1:数据管理-导入数据

 

Step 2:创建知识索引

选择导入数据到知识库

 获取知识索引ID,支持与百炼Assistant API结合使用,支持RAG和插件的组合调用;

 查看切割文档

Step 3:创建应用

进入我的应用后,点击新增应用。然后在应用配置中,进行以下几步操作:

  1. 选择模型。目前仅支持qwen-max模型,后续将支持更多的模型。同时,也可以支持设置模型内容生成的相关参数,如temperature等。

  2. 开启“知识检索增强”。

  3. 选择知识库,即在Step2中创建的知识索引。

  4. 点击“保存并发布”按钮。

 

4、测试AI应用

4.1 简单问题

4.2、自定义插件

在某些场景下,我们除了需要根据文档回答问题之外,还需要根据我们自定义的内容给出答案,例如查询公司某些业务的数据项,指标项等,这些三方ai无法清除,那么我们就可以通过自定义插件。

 创建自定义插件

 

 5 SDK对接

1、获取应用appid apikey

2、对接的地址

5.1、普通请求
@RequestMapping(value = "/ask/test")
public AssistantResp ask(@RequestBody AssistantReq req) {
    long l = System.currentTimeMillis();
    log.info("ask start={} message={}", l, req.getMessage());
    try {
        if (req.getMessage() == null || req.getMessage().trim().length() == 0) {
            return AssistantResp.builder().message("请输入问题").build();
        }
        ApplicationParam param = ApplicationParam.builder()
                .apiKey("sk-&&&&&&&&")
                .appId("f8a%%%%%%%%%%%%%%")
                .prompt(req.getMessage())
                .sessionId(req.getSessionId())
                .temperature(0.5F)
                .build();

        Application application = new Application();
        ApplicationResult result = application.call(param);
        log.info("result={}", JSONUtil.toJsonStr(result));
        AssistantResp ask = AssistantResp.builder().message(result.getOutput().getText()).build();

        log.info("请求耗时:{}", System.currentTimeMillis() - l);
        log.info("ask end={},message={}", System.currentTimeMillis(), ask.getMessage());
        return ask;
    } catch (Exception e) {
        return AssistantResp.builder().message("系统繁忙,请稍后再试").build();
    }

}
5.2 流式响应
@RequestMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public ResponseEntity<StreamingResponseBody> stream(@RequestBody AssistantReq req) {
    try {
        ApplicationParam param = ApplicationParam.builder()
                .apiKey("sk-&&&&&&&&&&")
                .appId("**************")
                .prompt(req.getMessage())
                .incrementalOutput(true)
                .build();

        Application application = new Application();
        Flowable<ApplicationResult> resultFlowable = application.streamCall(param);

        StreamingResponseBody responseBody = outputStream -> {
            resultFlowable.blockingForEach(data -> {
                        String content = data.getOutput().getText();
                        log.info("content={}",content);
                        outputStream.write(content.getBytes());
                        outputStream.flush(); // 确保数据立即发送
                    }
            );

        };

        return ResponseEntity.ok().body(responseBody);
    } catch (NoApiKeyException e) {
        e.printStackTrace();
    } catch (InputRequiredException e) {
        e.printStackTrace();
    }
    return ResponseEntity.ok().body(null);
}
5.3 多轮会话
public void answer(String askStr,String tenantKey,String openId) throws Exception {
        //通过openId 获取 sessionId
        String sessionId = map.get(openId);
        log.info("askStr start={}",askStr);
        ApplicationParam param = ApplicationParam.builder()
                .apiKey("sk-b**********")
                .appId("f**************")
                .prompt(askStr)
                .sessionId(sessionId)
                .build();
        log.info("param={}",JSONUtil.toJsonStr(param));
        Application application = new Application();
        ApplicationResult result = application.call(param);
        if(result.getOutput().getSessionId()!=null){
            map.put(openId,result.getOutput().getSessionId());
        }
        String text = result.getOutput().getText();

    }

下一篇:通义千问AI模型对接飞书机器人-集成飞书机器人(2-2)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1936750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA的断点调试(Debug)

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …

基于chrome插件的企业应用

一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon&#xff0c;一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…

数据分析入门:用Python和Numpy探索音乐流行趋势

一、引言 音乐是文化的重要组成部分&#xff0c;而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单&#xff0c;我们可以了解哪些歌曲或歌手正在受到大众的欢迎&#xff0c;甚至预测未来的流行趋势。Python作为一种强大的编程语言&#xff0c;结合其丰…

【数据库系列】Parquet 文件介绍

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

记录些Spring+题集(8)

Spring Bean 的生命周期 Spring Bean 的生命周期涉及到 Spring 框架中对象的创建、初始化、使用和销毁等关键过程。 在Spring框架中&#xff0c;Bean的生命周期经历以下几个阶段&#xff1a; 1&#xff09;实例化&#xff1a; Spring 根据配置文件或注解等方式创建 Bean 实例…

《0基础》学习Python——第十八讲__爬虫\<1>

一、什么是爬虫 爬虫是一种网络数据抓取的技术。通过编写程序&#xff08;通常使用Python&#xff09;&#xff0c;爬虫可以自动化地访问网页&#xff0c;解析网页内容并提取出所需的数据。爬虫可以用于各种用途&#xff0c;如搜索引擎的索引&#xff0c;数据分析和挖掘&#x…

vue 腾讯云 javascript sdk + 简单富文本组件设计+实战

<template><div><quill-editor v-model"content" ref"myQuillEditor" :options"editorOption" change"onEditorChange"input"handleInput"></quill-editor><!-- 链接添加对话框 --><el-di…

随手记:推荐vscode好用的几个小插件

原始用了挺久的插件&#xff0c;先上截图&#xff0c;以后有空再编辑&#xff1a; fittenCode 是一个AI小助手&#xff0c;相对来说很智能&#xff0c;你在vscode当中编写代码&#xff0c;甚至都可以知道你下一步知道干嘛&#xff0c;训练的还可以。而且还可以帮你起名字&…

spring MVC 简单的案例(2)用户登录

一、用户登录 1&#xff09;前端代码 index.html <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maxim…

Filebeat k8s 部署(Deployment)采集 PVC 日志发送至 Kafka——日志处理(二)

文章目录 前言Filebeat Configmap 配置Filebeat Deployment验证总结 前言 在上篇文章中总结了 Django 日志控制台输出、文件写入按天拆分文件&#xff0c;自定义 Filter 增加 trace_id 以及过滤——日志处理&#xff08;一)&#xff0c;将日志以 JSON 格式写入日志文件。我们的…

【BUG】已解决:SyntaxError invalid syntax

SyntaxError invalid syntax 目录 SyntaxError invalid syntax 【常见模块错误】 错误原因&#xff1a; 解决办法&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于…

CentOS 7 安装Jenkins2.346.1(war方式安装)

既然想要安装Jenkins&#xff0c;肯定是先要从官网解读所需环境配置信息&#xff0c;如需了解更多自行查阅 https://www.jenkins.io/doc/book/installing/linux/ JDK17&#xff0c;Maven3.9 安装 先从官网分别下载JDK17与Maven3.9 下载好之后上传至服务器、并解压&#xff1a…

【体外诊断】ARM/X86+FPGA嵌入式计算机在医疗CT机中的应用

体外诊断 信迈科技提供基于Intel平台、AMD平台、NXP平台的核心板、2.5寸主板、Mini-ITX主板、4寸主板、PICO-ITX主板&#xff0c;以及嵌入式准系统等计算机硬件。产品支持GAHDMI等独立双显&#xff0c;提供丰富串口、USB、GPIO、PCIe扩展接口等I/O接口&#xff0c;扩展性强&…

vscode里的ts配置以及js配置不生效,可能是扩展程序被关了

在setting.json里检查了下typescript的配置发现配置都被置灰了。。。 最后在我不断重复尝试重启vscode的时候&#xff0c;右下角总是弹出一个扩展程序未使用&#xff0c;可能会影响编辑器使用&#xff0c;我点了一下开启&#xff0c;nnd&#xff0c;原来是builtin typescript-…

Leetcode1305.两颗二叉搜索树中的所有元素

1.题目要求: 给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表&#xff0c;其中包含 两棵树 中的所有整数并按 升序 排序。.2.思路: 我这个方法采用的是设立一个数组&#xff0c;然后用前序遍历把值存入数组中&#xff0c;然后用qsort给它排序 3.代码: /*** Definiti…

Spring Boot2(Spring Boot 的Web开发 springMVC 请求处理 参数绑定 常用注解 数据传递)

目录 一、Spring Boot 的Web开发 1. 静态资源映射规则 2. enjoy模板引擎 二、springMVC 1. springMVC-请求处理 测试&#xff1a; 以post方式请求 限制请求携带的参数 GetMapping 查询 PostMapping 新增 DeleteMapping删除 PutMapping 修改 2. springMVC-参…

5.java操作RabbitMQ-简单队列

1.引入依赖 <!--rabbitmq依赖客户端--> <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId> </dependency> 操作文件的依赖 <!--操作文件流的一个依赖--> <dependency><groupId>c…

【AI教程-吴恩达讲解Prompts】第1篇 - 课程简介

文章目录 简介Prompt学习相关资源 两类大模型原则与技巧 简介 欢迎来到面向开发者的提示工程部分&#xff0c;本部分内容基于吴恩达老师的《Prompt Engineering for Developer》课程进行编写。《Prompt Engineering for Developer》课程是由吴恩达老师与 OpenAI 技术团队成员 I…

vue学习笔记(十)——Vuex(状态管理,组件间共享数据)

1. vuex基础-介绍 1.1 为什么会有Vuex ? 在现代 Web 开发复杂多变的需求驱动之下&#xff0c;组件化开发已然成为了事实上的标准。然而大多数场景下的组件都并不是独立存在的&#xff0c;而是相互协作共同构成了一个复杂的业务功能。 组件间的通信成为了必不可少的开发需求。…

Android IjkPlayer内核编译记(一)so库编译使用

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/140528831 本文出自 容华谢后的博客 0.写在前面 最近在搞RTMP协议直播拉流的功能&#xff0c;使用了B站开源的IjkPlayer作为播放器内核&#xff0c;在网络不好的情况下延迟会比较高&#xf…