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

一 背景

根据业务或者使用场景搭建自定义的智能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-long | qwen-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、普通请求
java 复制代码
@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 流式响应
java 复制代码
@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 多轮会话
java 复制代码
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博客

相关推荐
robinfang201929 分钟前
AI在医学领域:弱监督方法自动识别牙痕舌
人工智能·健康医疗
weixin_4462608530 分钟前
AI大模型学习
人工智能·学习
weixin_452600692 小时前
【青牛科技】D1117 1.0A低压差线性稳压电路芯片介绍,可保证了输出电压精度控制在±1.5%的范围内
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·dvd 解码板
封步宇AIGC2 小时前
量化交易系统开发-实时行情自动化交易-4.4.1.做市策略实现
人工智能·python·机器学习·数据挖掘
港股研究社2 小时前
华为Mate 70系列发布,揭示AI+消费电子产业化新阶段
人工智能·华为
bylander3 小时前
【AI学习】Mamba学习(十八):S6的硬件感知设计
人工智能·深度学习·学习·机器学习
途普智能3 小时前
途普科技企业知识中台完成华为昇思MindSpore技术认证
数据库·人工智能·科技·华为·知识图谱
卡卡_R-Python3 小时前
分类算法——基于heart数据集实现
人工智能·分类·数据挖掘
上海合宙LuatOS4 小时前
直接抄作业!Air780E模组LuatOS开发:位运算(bit)示例
人工智能·单片机·嵌入式硬件·物联网·硬件工程·iot
池央4 小时前
深度学习模型:卷积神经网络(CNN)
人工智能·深度学习·cnn