一、基于【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_type
和access_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
参数的取值,并分别用两个变量model
和messages
记录模型名称与消息列表。
接下来,让我们发送第二条消息:
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()