ERNIE SDK 本地使用与markdown自动生成

news2024/11/20 11:30:07

ERNIE SDK 仓库包含两个项目:ERNIE Bot Agent 和 ERNIE Bot。ERNIE Bot Agent 是百度飞桨推出的基于文心大模型编排能力的大模型智能体开发框架,结合了飞桨星河社区的丰富预置平台功能。ERNIE Bot 则为开发者提供便捷接口,轻松调用文心大模型的文本创作、通用对话、语义向量及AI作图等基础功能。

ERNIE Bot是文心&飞桨官方提供的Python库,提供便捷易用的Python接口,可调用文心大模型能力,完成包含文本创作、通用对话、语义向量、AI作图在内的多项任务。

突然发现自己有100万免费token,刚好需要文本生成,赶紧来试试。

安装非常简单:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple erniebot==0.5.0

首先看看我们可以调用哪些模型:

import erniebot
# 列出支持的模型
models = erniebot.Model.list()
print(models)
# ernie-3.5             文心大模型(ernie-3.5)
# ernie-turbo           文心大模型(ernie-turbo)
# ernie-4.0             文心大模型(ernie-4.0)
# ernie-longtext        文心大模型(ernie-longtext)
# ernie-text-embedding  文心百中语义模型
# ernie-vilg-v2         文心一格模型

 支持的模型介绍: 

以下是对这几个模型的特点和使用场景的简要描述:

  1. ernie-3.5(文心大模型)

    • 特点

      • 作为百度文心大模型家族中的一员,ernie-3.5具有强大的语言理解和生成能力。
      • 它是基于深度学习技术构建的,可以从海量的数据中学习到丰富的语言知识。
      • ernie-3.5支持多种NLP任务,包括文本分类、命名实体识别、语义匹配等。
    • 使用场景

      • 适用于需要文本分析和理解的场景,如情感分析、智能问答、文本摘要等。
      • 在内容生成、智能对话等方面也有广泛应用。
  2. ernie-turbo(文心大模型)

    • 特点

      • ernie-turbo是百度推出的一款高效、轻量级的语言模型。
      • 它在保证性能的同时,大大降低了计算和存储资源的需求。
      • 特别适合在边缘设备上部署,如手机、平板等。
    • 使用场景

      • 适用于资源受限的环境,需要快速响应和高效执行的NLP任务。
      • 例如,在移动设备上进行文本输入补全、智能推荐等。
  3. ernie-4.0(文心大模型)

    • 特点

      • ernie-4.0是百度文心大模型系列的最新版本,具备更强大的语言理解和生成能力。
      • 它在多个领域都进行了优化和提升,包括知识推理、阅读理解、文本生成等。
      • 还引入了多模态能力,能够理解并生成图像、视频等多种类型的内容。
    • 使用场景

      • 适用于复杂的语言处理任务,如自动写作、智能翻译、情感对话等。
      • 在教育、金融、医疗等多个垂直领域都有广泛应用。
  4. ernie-longtext(文心大模型)

    • 特点

      • ernie-longtext专门针对长文本处理和生成任务进行了优化。
      • 它能够处理超长文本输入,并保持高性能和高效率。
      • 特别适合处理文档、文章等长篇幅的内容。
    • 使用场景

      • 适用于需要处理长文本的场景,如文档摘要、论文理解、法律文书处理等。
      • 在新闻媒体、学术研究等领域有广泛应用。
  5. ernie-text-embedding(文心百中语义模型)

    • 特点

      • ernie-text-embedding是一个专注于文本嵌入表示的模型。
      • 它能够将文本映射到一个高维空间中,使得语义相似的文本在空间中位置更接近。
      • 特别适合用于文本相似度匹配、聚类等任务。
    • 使用场景

      • 适用于文本相似度计算和文本聚类等任务。
      • 在推荐系统、搜索引擎优化等方面有广泛应用。
  6. ernie-vilg-v2(文心一格模型)

    • 特点

      • ernie-vilg-v2是一个多模态模型,结合了视觉和语言信息。
      • 它能够理解并生成图像,实现文本和图像之间的跨模态交互。
      • 在视觉问答、图像标注、视觉对话等方面表现出色。
    • 使用场景

      • 适用于需要处理图像和文本信息的联合任务。
      • 在社交媒体分析、广告设计、智能家居等领域有广泛应用。

请注意,上述描述可能随着模型的不断更新和发展而发生变化。在实际应用中,建议查阅最新的官方文档和资源以获取最准确的信息。

各个模型具体效果可以来这里体验:
 百度智能云控制台 (baidu.com)icon-default.png?t=N7T8https://console.bce.baidu.com/qianfan/ais/console/onlineTest

 由于是开发文本生成功能,所以使用个人觉得更好的 ERNIE-4.0 模型,选择模型并测试。

多轮对话
# encoding:utf-8
import erniebot

# 此处,我们使用aistudio后端。在AI Studio个人中心的访问令牌页面,大家可以获取aistudio后端的access token,然后填入下面代码中(替换{YOUR-ACCESS-TOKEN})。
erniebot.api_type = 'aistudio'
erniebot.access_token = '{YOUR-ACCESS-TOKEN}'

# 选择模型
model = 'ernie-4.0'
# messages中的每一项都是一个字典,其中的'role': 'user'表示发出当前消息的角色是“用户”,还可以是"assistant"表示对话助手,'content'则对应消息的具体内容。
messages = [{'role': 'user', 'content': "详细列出图像处理领域专业术语并解释"}]

first_response = erniebot.ChatCompletion.create(
    model=model,
    messages=messages,
)
print(first_response.get_result())

messages.append(first_response.to_message())
messages.append({'role': 'user', 'content': "你回答的很好,希望能再列出更多跟之前回答都完全不一样的图像处理领域专业术语"})

实测发现这种非流式传输还容易 timeout,在ai studio 的 BML Codelab 环境里运行,居然也会 timeout,这个是访问量过大导致的吗?还是 api_type 是 'aistudio' 免费的,所以卡? 

设置流式传输

在实际应用中,模型可能给出很长的回答,而这会导致很长的响应时间。比如生成200字的文案耗时较久,在获取到模型的响应前能够感觉到明显的卡顿。为了减少用户的等待时间,ERNIE Bot支持流式传输数据。具体而言,为erniebot.ChatCompletion.create API传入参数stream=True,则API将返回一个生成器。这个生成器对应一个响应序列,我们通过迭代操作即可获取全部响应。

# encoding:utf-8
import erniebot

class ERNIE:
    def __init__(self, model: str, access_token: str = None) -> None:
        self.chat_history = []
        self.model = model
        erniebot.api_type = "aistudio"
        erniebot.access_token = '换成你的 access token'

    def chat(self, query: str) -> str:
        "Use this function to chat with ERNIE BOT"
        self.chat_history.append({"role": "user", "content": query})
        response = erniebot.ChatCompletion.create(
            model=self.model,
            messages=self.chat_history,
        )
        self.chat_history.append({"role": "assistant", "content": response.get_result()})
        return response.get_result()

    def chat_stream(self, query: str) -> None:
        "Use this function to chat with ERNIE BOT"
        self.chat_history.append({"role": "user", "content": query})
        response = erniebot.ChatCompletion.create(model=self.model, messages=self.chat_history, stream=True)
        result = ""

        for resp in response:
            result += resp.get_result()
            print(result, flush=True)
        self.chat_history.append({"role": "assistant", "content": result})

    def clear(self):
        self.chat_history = []


ERNIE_BOT = ERNIE(model="ernie-4.0")
ERNIE_BOT.chat_stream("尽可能多的列出图像处理领域专业术语并解释,生成必须使用markdown格式,不需要给出来源")
ERNIE_BOT.chat_stream("你回答的很好,希望能再列出更多跟之前回答都完全不一样的图像处理领域专业术语")

慢慢打印出了想要的内容,可以将 markdown直接复制到 CSDN里,这样一篇专业术语知识库就生成了。ps: 流式打印发现很多内容是重复的,估计也是网卡或者调用繁忙,体验不太好。后面用不是免费的再试试

生成的内容文章:
图像处理领域专业术语-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Vulcan_S/article/details/136954139?spm=1001.2014.3001.5502

 就这两个问题,消耗了18648个token,这token消耗的有点快啊,感觉卡顿造成了很多无效的token消耗,或者代码有问题?后面继续摸索一下。。。

ERNIE SDK是一个强大的开发框架,它基于文心大模型及其Function Calling(函数调用)功能,为LLM(大型语言模型)应用开发提供了全新的视角。该框架旨在解决LLM应用开发中面临的核心挑战,并通过文心大模型展示了其卓越性能。

ERNIE SDK针对几个关键问题提供了有效的解决方案。首先,它解决了传统大模型在处理大型文档时面临的token输入数量限制问题。通过提供本地知识库检索的方式,使得处理大型文档问答任务更加方便。其次,ERNIE SDK使集成现有业务API工具成为可能,拓宽了LLM应用的功能性和适应性。此外,它还能够通过定制工具连接多种数据源,如SQL数据库,为大模型提供更多的信息。

作为一个高效的开发框架,ERNIE SDK大幅提升了开发者的工作效率。它支持开发者轻松地调用并统筹使用多种API,以构建应用。开发者可以根据用户需求以及函数描述信息,智能确定是否应该调用函数、调用哪一个函数,以及在调用该函数时需要如何设置输入参数。用户可以根据模型的提示调用函数,并将函数的响应传递给模型。模型将综合对话上下文信息,以自然语言形式给出满足用户需求的回答。

除了上述功能,ERNIE SDK还提供了文本嵌入服务,将文本转化为用数值表示的向量形式,用于文本检索、信息推荐、知识挖掘等场景。

总的来说,ERNIE SDK是一个功能强大、高效的开发框架,为LLM应用开发提供了全面的支持。无论是处理大型文档、集成业务API工具,还是连接多种数据源,ERNIE SDK都能为开发者提供有效的解决方案,助力他们构建出更加智能、高效的应用。

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

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

相关文章

从零开始学习在VUE3中使用canvas(六):lineCap(线条端点样式)

一、简介 lineCap能够让我们设置线条的端点样式,例如 1. butt const ctx canvas.getContext("2d");ctx.lineCap "butt"; // 默认样式,也可以显式指定 2.round const ctx canvas.getContext("2d");//圆头ctx.lineCap …

内存条@电脑支持的最大内存@升级内存硬件

文章目录 电脑支持的最大内存规格cpu官网查看支持的规格命令行查看脚本化 DDR内存LPDDR内存内存升级扩展👺插槽检查板载内存SPD内存厂商其他 内存参数👺性能指标使用软件查看更多内存相关的软件工具 电脑支持的最大内存规格 确认电脑最大支持内存大小和频…

MT2191 整数大小比较(高精度)

给出两个正整数&#xff0c;判断他们的大小。 输入格式&#xff1a; 两个正整数。 输出格式&#xff1a; 若前者大&#xff0c;输出>&#xff1b; 若后者大&#xff0c;输出<&#xff1b; 若一样大&#xff0c;输出。 输入&#xff1a; 1412894619244619891 23762842…

js 质数的因子

功能:输入一个正整数&#xff0c;按照从小到大的顺序输出它的所有质因子&#xff08;重复的也要列举&#xff09;&#xff08;如180的质因子为2 2 3 3 5 &#xff09; 按照从小到大的顺序输出它的所有质数的因子&#xff0c;以空格隔开 输入 180 输出 2 2 3 3 5 let line 180;…

宁波零碳工厂,“零碳工厂”指引未来

&#x1f600;随着环保意识的提高⬆️和全球气候变化问题&#x1f30f;的日益严重&#xff0c;⬇️减少碳排放、实现可持续发展已成为&#x1f30e;全球的共识。而在这个&#x1f504;过程中&#xff0c;宁波的“零碳工厂”建设&#x1f3e9;正成为引领未来的重要趋势。 “零碳…

jeect-boot queryFieldBySql接口RCE漏洞(CVE-2023-4450)复现

jeect-boot积木报表由于未授权的 API /jmreport/queryFieldBySql 使用了 freemarker 解析 SQL 语句从而导致了 RCE 漏洞的产生。 1.漏洞级别 高危 2.漏洞搜索 fofa app"Jeecg-Boot 企业级快速开发平台"3.影响范围 JimuReport < 1.6.14.漏洞复现 这个漏洞的…

基于springboot+vue的农产品直卖平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【Android开发】【创建Activity,Activity之间的切换/消息传递】【java】

一、第一个Activity 1.1 创建一个空Activity 1.2 创建一个布局 知识点 在XML中引用一个id&#xff1a;id/id_name 在XML中定义一个id&#xff1a;id/id_name 右键错误&#xff0c;点击Show Quick-Fixes&#xff0c;再点击弹出的Suppress:Add........&#xff0c;错误会被自动修…

烟火AI识别检测算法在新能源汽车充电桩站点的应用方案

新能源汽车作为现代科技与环保理念的完美结合&#xff0c;其普及和应用本应带给人们更加便捷和绿色的出行体验。然而&#xff0c;近年来新能源汽车充电火灾事故的频发&#xff0c;无疑给这一领域投下了巨大的阴影。这不禁让人深思&#xff0c;为何这一先进的交通工具在充电过程…

思科网络中DHCP中继的配置

一、什么是DHCP中继&#xff1f;DHCP中继有什么用? &#xff08;1&#xff09;DHCP中继是指一种网络设备或服务&#xff0c;用于在不同的子网之间传递DHCP&#xff08;动态主机配置协议&#xff09;消息。DHCP中继的作用是帮助客户端设备获取IP地址和其他网络配置信息&#x…

运算放大器-放大倍数的表示方法:增益(Gain) 和 分贝(dB)

运算放大器的增益&#xff08;Gain&#xff09;可以用分贝&#xff08;dB&#xff09;表示&#xff0c;也可以用放大倍数表示。这两种表示方法之间的转换关系是基于对数的定义。 目录 1. 电压&#xff08;电流&#xff09;放大倍数分贝数定义&#xff1a; 2. 运放的增益&…

C语言文件操作相关题目

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

OPPO案例 | Alluxio在DataAI湖仓一体的实践

分享嘉宾&#xff1a; 付庆午-OPPO数据架构组大数据架构师 在OPPO的实际应用中&#xff0c;我们将自研的Shuttle与Alluxio完美结合&#xff0c;使得整个Shuttle Service的性能得到显著提升&#xff0c;基本上实现了性能翻倍的效果。通过这一优化&#xff0c;我们成功降低了约一…

阿里云2核4G服务器优惠价格30元、165元和199元1年,轻量和ECS

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

Flutter学习10 - Json解析与Model使用

对于网络请求返回的 Json 数据&#xff0c;一般会进行如下解析&#xff1a; 将 Json String 解析为 Map<String, dynamic>将 Json String 解析为 Dart Model 发起一个返回 Json String 的网络请求 import package:http/http.dart as http;void main() {_doGet(); }_do…

mysql无法看到3306端口监听

参考:https://blog.csdn.net/shumeigang/article/details/103902459 mysql> show global variables like ‘port’; 是0 原因是我的my.cnf有话&#xff1a; skip-network 或 注释掉&#xff0c;然后重新启动下数据库&#xff0c;运行netstat -an|grep 3306 就可以看到了

基于springboot+vue的教学改革项目管理系统(源码+论文)

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

PHP+MySQL开发组合:智慧同城便民信息小程序源码系统 带完整的安装代码包以及安装部署教程

当前&#xff0c;城市生活的节奏日益加快&#xff0c;人们对各类便民信息的需求也愈发迫切。无论是寻找家政服务、二手交易&#xff0c;还是发布租房、求职信息&#xff0c;一个高效、便捷的信息平台显得尤为重要。传统的信息发布方式往往存在信息更新不及时、查找困难等问题&a…

在存在代理的主机上,为docker容器配置代理

1、配置Firefox的代理 (只配置域名或者ip&#xff0c;前面不加http://) 2、为容器中的Git配置代理 git config --global http.proxy http://qingteng:8080 3、Git下载时忽略证书校验 env GIT_SSL_NO_VERIFYtrue git clone https://github.com/nginx/nginx.git 4、docker的…

【问题记录】自定义Prometheus exporter收集数据,Prometheus显示收集到数据,grafana未显示数据出来

问题背景&#xff1a; 使用golang编写Prometheus exporter&#xff0c;获取指定API Url返回值中的data值&#xff0c;把它做为自定义指标。 1、exporter 500ms自动更新一次data值 2、Prometheus的Graph界面输入自定义指标可以查询到值的变化 3、自定义指标最小时间是ms级别&…