基于文心一言【ERNIE Bot SDK】的文本纠错

一、基于【ERNIE Bot SDK】的文本纠错

1.ERNIE Bot SDK介绍

简要说明在AI Studio上安装、配置和使用ERNIE Bot SDK github.com/PaddlePaddl...

ERNIE Bot SDK是文心&飞桨官方提供的Python软件开发工具包,简称EB SDK。

EB SDK提供便捷易用的Python接口,可调用文心一言大模型能力,完成包含文本创作、通用对话、语义向量、AI作图在内的多项任务。

EB SDK代码在GitHub上开源,欢迎大家进入repo查看源码和使用文档,如果遇到问题也可以提出issue。

下图是基于EB SDK开发的Gradio演示应用程序,大家可以在AI Studio应用中心在线体验。

2.项目思路

  • 通过使用Ernie Bot实现文本纠错
  • gradio部署

二、环境设置

1.安装EB SDK

使用pip可以快速安装EB SDK,这里安装0.3.1版本。

python 复制代码
%%capture
!pip install erniebot==0.3.1

2.认证鉴权

调用文心一言大模型功能是收费服务,所以使用EB SDK需要认证鉴权。

EB SDK认证鉴权主要是设置后端和access token,分别通过api_typeaccess_token参数来指定。

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

python 复制代码
import erniebot

erniebot.api_type = 'aistudio'
erniebot.access_token = "{替换成你的 ACCESS-TOKEN}"

请注意:

  • 不同后端的access token获取方式不同,特定后端获取的access token无法用于其他后端的认证鉴权。
  • access token是私密信息,切记不要对外公开。
  • aistudio后端的access token对应大家的个人账户,目前每个账户有100万token的免费额度,可以用于EB SDK调用文心一言大模型。

3. EB SDK Hello-World

作为开始,让我们用EB SDK开发一个hello-world程序:

python 复制代码
response = erniebot.ChatCompletion.create(
    model='ernie-bot',
    messages=[{'role': 'user', 'content': "请对我说"你好,世界!""}],
)
print(response.result)
你好,世界! 

如果你需要任何帮助或者有任何问题,请随时告诉我。我将竭诚为你服务。

以上代码调用erniebot.ChatCompletion.create API,发起对话补全请求,并打印模型的响应结果。

我们通过model参数指定使用ernie-bot(文心一言旗舰版)模型,通过messages参数指定给大模型的输入消息。

在以上代码中,我们只进行单轮对话,因此messages列表中只包含一个元素。messages中的每一项都是一个字典,其中的'role': 'user'表示发出当前消息的角色是"用户"(也就是我们),'content'则对应消息的具体内容。

4.多轮对话

下面让我们尝试一个复杂一些的例子------多轮对话。

文心一言大模型具备强大的上下文理解能力,在我们发送新的消息时,模型能够联系历史消息进行回复。

首先,对hello-world的例子做一点修改:

python 复制代码
model = 'ernie-bot'
messages = [{'role': 'user', 'content': "请问你能以《你好,世界》为题,写一首现代诗吗?"}]
first_response = erniebot.ChatCompletion.create(
    model=model,
    messages=messages,
)
print(first_response.result)
你好,世界
在晨光的辉煌之下,
我向你问好,世界。
微光中的你,
如初醒的婴儿,
清新而纯真。

你的蓝色眼睛,
深邃而神秘,
像梦中的海洋,
无尽的灵魂里,
藏着无尽的秘密。

你的山川,
雄浑而峻峭,
像勇者的脊梁,
坚韧而不屈。
你的花朵,
如诗如画,
色彩斑斓,
每一瓣都盛满了生命的热烈。

你好,世界,
我以诗人的名义,
向你致敬。
你是我的爱人,
我的朋友,
我的梦想。

每一个呼吸,
我都在你的怀抱中,
感受你的脉动。
每一个瞬间,
我都在你的天空下,
领略你的辽阔。

你的风,你的雨,
你的阳光,你的夜晚,
都在我心中留下深深的烙印。
你好,世界,
我向你问好,
我向你致敬。

在你的面前,
我是如此的渺小,
但我的心却如此的广大。
在你的里面,
我看到了生命的奇迹,
看到了世界的美丽。

让我们以诗人的眼睛,
去感受你的温度,
去寻找你的声音。
让我们以诗人的语言,
去歌颂你的伟大,
去赞美你的美好。

你好,世界,
我向你问好。
在每一个黎明,
在每一个黄昏,
我都想对你说:
你好,世界!

上述代码相比hello-world的例只是修改了messages参数的取值,并分别用两个变量modelmessages记录模型名称与消息列表。

接下来,让我们发送第二条消息:

python 复制代码
messages.append({'role': 'assistant', 'content': first_response.result})
messages.append({'role': 'user', 'content': "谢谢你!请问你能把这首诗改写成七言绝句吗?"})
python 复制代码
second_response = erniebot.ChatCompletion.create(
    model=model,
    messages=messages,
)
print(second_response.result)
你好,世界
晨光辉煌问你好,
深邃神秘是世界。
山川勇者脊梁坚,
花朵生命热烈颂。

三、gradio部署

1.包安装

requirements.txt

txt 复制代码
erniebot==0.3.1
gradio==3.44.3
numpy
python 复制代码
import os
os.system("python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/")

2.介绍界面创建

python 复制代码
import erniebot 
import gradio as gr


def create_ui_and_launch():
    with gr.Blocks(title="基于【ERNIE Bot SDK】的文本纠错", theme=gr.themes.Soft()) as block:
        with gr.Row():
            gr.HTML("""<h1 align="center">基于【ERNIE Bot SDK】的文本纠错功能体验</h1>""")
        with gr.Accordion("【使用说明】(点击展开/折叠)", open=False):
            gr.Markdown(
                    """
                    ERNIE Bot SDK是文心&飞桨官方提供的Python软件开发工具包,其提供便捷易用的Python接口,可调用文心一言大模型能力,完成包含文本创作、通用对话、语义向量、AI作图在内的多项任务。ERNIE Bot SDK代码在GitHub上开源,欢迎大家进入[repo](https://github.com/PaddlePaddle/ERNIE-Bot-SDK)查看源码和使用文档,如果遇到问题也可以提出issue。

                    本应用提供对全套文本纠错功能。

                    * 对于对话补全与语义向量功能,"API Type"选择`aistudio`,在[访问令牌页面](https://aistudio.baidu.com/usercenter/token)复制access token,并粘贴到"Access Token"文本框中。
                    
                    """
            )
        create_chat_completion_tab()
    block.launch()

3.预测

python 复制代码
def predict(input_text):
    erniebot.api_type = "aistudio"
    erniebot.access_token = "f6489f7f1c6c9920f336629261faac7cff88fcc5"

    response = erniebot.ChatCompletion.create(
        model="ernie-bot",
        messages=[ {
            "role": "user",
            "content": f"请对以下文本进行文本纠错:\n{input_text}"
        }])
    print(response.result)
    return response.result
examples=[
    ["阔以康康这篇关于电商用户增长的数据分析嘛~"],
    ["小红鼠是一个生活方式平台和消费决策入口,是当前著名的电商平台."]
]

4.输入输出界面创建

python 复制代码
def create_chat_completion_tab():
    with gr.Tab("对话补全(Chat Completion)") as chat_completion_tab:
        with gr.Row():
            with gr.Column(scale=4):
                input_text = gr.Textbox(label="待纠错文本", lines=4, placeholder="请输入...")
                output_text = gr.Textbox(label="纠正文本", lines=4, placeholder="")
                with gr.Row():
                    send_btn = gr.Button("发送")
                    clear_btn = gr.Button("清空")
                    send_btn.click(predict, inputs=[input_text],outputs=[output_text])
                    clear_btn.click(lambda _: (None, None), inputs=clear_btn,outputs=[input_text,output_text])
                    gr_examples = gr.Examples(examples=examples, inputs=[input_text],
                                  label="输入示例 (点击选择例子)",
                                  examples_per_page=20)

if __name__ == '__main__':
    create_ui_and_launch()

四、应用界面

五、代码

1.requirements.txt

ini 复制代码
erniebot==0.3.1
gradio==3.44.3
numpy

2.gradio部署文件

python 复制代码
#该应用创建工具共包含三个区域,顶部工具栏,左侧代码区,右侧交互效果区,其中右侧交互效果是通过左侧代码生成的,存在对照关系。
#顶部工具栏:运行、保存、新开浏览器打开、实时预览开关,针对运行和在浏览器打开选项进行重要说明:
#[运行]:交互效果并非实时更新,代码变更后,需点击运行按钮获得最新交互效果。
#[在浏览器打开]:新建页面查看交互效果。
#以下为应用创建工具的示例代码

import os
os.system("python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/")
import erniebot 
import gradio as gr


def create_ui_and_launch():
    with gr.Blocks(title="基于【ERNIE Bot SDK】的文本纠错", theme=gr.themes.Soft()) as block:
        with gr.Row():
            gr.HTML("""<h1 align="center">基于【ERNIE Bot SDK】的文本纠错功能体验</h1>""")
        with gr.Accordion("【使用说明】(点击展开/折叠)", open=False):
            gr.Markdown(
                    """
                    ERNIE Bot SDK是文心&飞桨官方提供的Python软件开发工具包,其提供便捷易用的Python接口,可调用文心一言大模型能力,完成包含文本创作、通用对话、语义向量、AI作图在内的多项任务。ERNIE Bot SDK代码在GitHub上开源,欢迎大家进入[repo](https://github.com/PaddlePaddle/ERNIE-Bot-SDK)查看源码和使用文档,如果遇到问题也可以提出issue。

                    本应用提供对全套文本纠错功能。

                    * 对于对话补全与语义向量功能,"API Type"选择`aistudio`,在[访问令牌页面](https://aistudio.baidu.com/usercenter/token)复制access token,并粘贴到"Access Token"文本框中。
                    
                    """
            )
        create_chat_completion_tab()
    block.launch()


def predict(input_text):
    erniebot.api_type = "aistudio"
    erniebot.access_token = "替换成你自己的"

    response = erniebot.ChatCompletion.create(
        model="ernie-bot",
        messages=[ {
            "role": "user",
            "content": f"请对以下文本进行文本纠错:\n{input_text}"
        }])
    print(response.result)
    return response.result
examples=[
    ["阔以康康这篇关于电商用户增长的数据分析嘛~"],
    ["小红鼠是一个生活方式平台和消费决策入口,是当前著名的电商平台."]
]

def create_chat_completion_tab():
    with gr.Tab("对话补全(Chat Completion)") as chat_completion_tab:
        with gr.Row():
            with gr.Column(scale=4):
                input_text = gr.Textbox(label="待纠错文本", lines=4, placeholder="请输入...")
                output_text = gr.Textbox(label="纠正文本", lines=4, placeholder="")
                with gr.Row():
                    send_btn = gr.Button("发送")
                    clear_btn = gr.Button("清空")
                    send_btn.click(predict, inputs=[input_text],outputs=[output_text])
                    clear_btn.click(lambda _: (None, None), inputs=clear_btn,outputs=[input_text,output_text])
                    gr_examples = gr.Examples(examples=examples, inputs=[input_text],
                                  label="输入示例 (点击选择例子)",
                                  examples_per_page=20)

if __name__ == '__main__':
    create_ui_and_launch()
相关推荐
DevinLGT15 分钟前
6Pin Type-C Pin脚定义:【图文讲解】
人工智能·单片机·嵌入式硬件
宋一诺3319 分钟前
机器学习—高级优化方法
人工智能·机器学习
龙的爹233332 分钟前
论文 | The Capacity for Moral Self-Correction in LargeLanguage Models
人工智能·深度学习·机器学习·语言模型·自然语言处理·prompt
Mr.简锋35 分钟前
opencv视频读写
人工智能·opencv·音视频
Baihai_IDP35 分钟前
「混合专家模型」可视化指南:A Visual Guide to MoE
人工智能·llm·aigc
寰宇视讯1 小时前
“津彩嘉年,洽通天下” 2024中国天津投资贸易洽谈会火热启动 首届津彩生活嘉年华重磅来袭!
大数据·人工智能·生活
Light601 小时前
低代码牵手 AI 接口:开启智能化开发新征程
人工智能·python·深度学习·低代码·链表·线性回归
墨绿色的摆渡人1 小时前
用 Python 从零开始创建神经网络(六):优化(Optimization)介绍
人工智能·python·深度学习·神经网络
春末的南方城市2 小时前
开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序
人工智能·计算机视觉·aigc·音视频
矢量赛奇2 小时前
比ChatGPT更酷的AI工具
人工智能·ai·ai写作·视频