Orange 开源项目 - 集成百度智能云-千帆大模型

news/2025/2/26 13:59:38

1 集成百度智能云-千帆大模型

百度智能云-千帆ModelBuilder百度智能云千帆大模型服务与开发平台ModelBuilder(以下简称千帆ModelBuilder)是面向企业开发者的一站式大模型开发及服务运行平台。千帆ModelBuilder不仅提供了包括文心一言底层模型和第三方开源大模型,还提供了各种AI开发工具和整套开发环境,方便客户轻松使用和开发大模型应用。

2 集成百度智能云-千帆大模型

2.1 获取API-KEY

获取百度智能云-千帆AK/SK,请参考百度智能云千帆官网「获取应用的AK和SK」

2.2 引入Maven依赖

<dependency>
     <groupId>org.springframework.ai</groupId>
     <artifactId>spring-ai-qianfan-spring-boot-starter</artifactId>
     <version>1.0.0-M5</version>
 </dependency>

2.3 集成对话模型(Chat Model)

 public class QianFanChatModelServiceImpl implements ChatModelService {

    private final QianFanChatModel chatModel;

    @Override
    public PlatformEnum getPlatform() {
        return PlatformEnum.QIAN_FAN;
    }

    @Override
    public Flux<Result<ConversationReplyVO>> conversationStream(ConversationParam param) {
        return conversationStream(param, List.of());
    }

    @Override
    public Flux<Result<ConversationReplyVO>> conversationStream(ConversationParam param, List<ChatSessionRecordVO> contextMessageList) {
        List<Message> messages = new ArrayList<>(MessageConverter.toMessageList(contextMessageList));
        messages.add(new UserMessage(param.getPrompt()));

        Prompt prompt = new Prompt(messages, QianFanChatOptions.builder()
                .model(param.getModelCode())
                .build());
        Flux<ChatResponse> stream = chatModel.stream(prompt);
        return stream
                .takeWhile(chatResponse -> Objects.nonNull(chatResponse) && Objects.nonNull(chatResponse.getResult())
                        && Objects.nonNull(chatResponse.getResult().getOutput()))
                .map(chatResponse -> {
                    if (log.isDebugEnabled()) {
                        log.debug("chatResponse: {}", chatResponse);
                    }
                    Usage usage = chatResponse.getMetadata().getUsage();
                    String content = chatResponse.getResult().getOutput().getContent();
                    ConversationReplyVO replyVO = ConversationReplyVO.builder()
                            .content(content)
                            .tokenUsage(TokenUsageVO.builder()
                                    .promptTokens(usage.getPromptTokens())
                                    .generationTokens(usage.getGenerationTokens())
                                    .totalTokens(usage.getTotalTokens())
                                    .build())
                            .build();
                    return ResultWrapper.ok(replyVO);
                });
    }

}
  • 项目源码:https://github.com/hengzq/orange-ai

2.3 在线体验

  • 在线体验: http://tiny.hengzq.cn
    在这里插入图片描述

3 项目体验

  • Orange 官网: http://hengzq.cn
  • 在线体验: http://tiny.hengzq.cn
  • 项目文档: http://hengzq.cn/orange-monomer/
  • 单体架构-后端源码下载【GitHub】: https://github.com/hengzq/orange-monomer
  • 单体架构-后端源码下载【Gitee】: https://gitee.com/hengzq/orange-monomer
  • 微服务版本-后端源码下载【GitHub】: https://github.com/hengzq/orange-cloud
  • 微服务版本-后端源码下载【Gitee】: https://gitee.com/hengzq/orange-cloud
  • 前端源码下载【GitHub】: https://github.com/hengzq/orange-cloud
  • 前端源码下载【Gitee】: https://gitee.com/hengzq/orange-cloud

注:前端项目设计灵活,能够同时兼容后端的单体架构和微服务架构

4 相关文档


http://www.niftyadmin.cn/n/5868802.html

相关文章

Ansible-03 docker安装-基于centos

1.创建invertory.ini并验证连通性 创建invertory.ini [docker_servers] 192.168.0.2执行命令 ansible -i invertory.ini docker_servers -m ping结果 192.168.0.2 | SUCCESS > {"ansible_facts": {"discovered_interpreter_python": "/usr/lib…

OpenCV(9):视频处理

1 介绍 视频是由一系列连续的图像帧组成的&#xff0c;每一帧都是一幅静态图像。视频处理的核心就是对这些图像帧进行处理。常见的视频处理任务包括视频读取、视频播放、视频保存、视频帧处理等。 视频分析: 通过视频处理技术&#xff0c;可以分析视频中的运动、目标、事件等。…

中文版【推荐】Topaz Gigapixel AI 5.6.1 WIN中文版 资源分享

Topaz AI Gigapixel是一款来自Topaz Labs公司的无损图片放大工具&#xff0c;软件采用了AI深度学习技术&#xff0c;可以帮助用户实现图片的“无损”放大功能&#xff0c;让低分辨率图片转为高分辨率、高质量图片&#xff0c;使用人工智能&#xff08;AI&#xff09;来填补那些…

支持向量机(SVM)简介与应用

目录 1. 什么是支持向量机&#xff1f; 2. SVM的基本原理 3. 核函数与SVM的扩展 4. SVM的优势与挑战 5. SVM的应用场景 6. 总结 1. 什么是支持向量机&#xff1f; 支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;是一种监督学习模型&#…

VUE 获取视频时长,无需修改数据库,前提当前查看视频可以得到时长

第一字段处 <el-table-column label"视频时长" align"center"> <template slot-scope"scope"> <span>{{ formatDuration(scope.row.duration) }}</span> </template> </el-ta…

编写一个程序,输入一个字符串并输出其长度(Python版)

编写一个程序&#xff0c;输入一个字符串并输出其长度 以下是Python实现代码: s input("请输入一个字符串&#xff1a;") print("字符串的长度是&#xff1a;", len(s))运行效果&#xff1a; 1.程序会等待用户输入&#xff08;如输入"Hello"&…

Vue+ElementPlus的一些问题修复汇总

目录 一、ElementPlusVue-router做侧边栏问题 二、 组件样式问题 2.1修改文字颜色、大小、粗细、边框的颜色 2.2修改聚焦后文字的颜色、边框的颜色 2.3修改鼠标悬浮时文字的颜色、边框的颜色 三、 组件样式问题 3.1修改文字颜色、大小、粗细 四、 样式问题 4.1当数据为空…

【数据结构】(Python)第六章:图

数据结构&#xff08;Python&#xff09;第六章&#xff1a;图 文章目录 数据结构&#xff08;Python&#xff09;第六章&#xff1a;图6.1 图的定义和基本概念6.2 图的存储结构6.2.1 邻接矩阵&#xff08;Adjacency Matrix&#xff09;6.2.2 邻接表&#xff08;Adjacency List…