从零实现教你AI机器人

文章首发于博客 OpenAI 接口实践

OpenAI的接口文档十分详细,包括对话补全,文本补全,代码补全等等信息,也包含了最佳生产实践,最佳安全实践等篇章,通读之后十分受用,推荐大家前往阅读。本文就是在接口文档的基础上,将常见的三种OpenAI 接口套壳应用代码展示出来,以帮助读者实现自己的工具。

环境准备

API 状态检查

提供了一个API 状态页面,可以看到接口实时延迟,以及出现大面积宕机时会显示公告。

API费用说明

模型名称context max tokens输入价格输出价格
gpt-3.5-turbo4096$0.0015 / 1K tokens$0.002 / 1K tokens
gpt-3.5-turbo-16k16,384$0.003 / 1K tokens$0.004 / 1K tokens
gpt-3.5-turbo-0613(支持函数调用)4096$0.0015 / 1K tokens$0.002 / 1K tokens
gpt-3.5-turbo-16k-061316,384$0.003 / 1K tokens$0.004 / 1K tokens
gpt-48,192$0.03 / 1K tokens$0.06 / 1K tokens
gpt-4-32k32,768$0.06 / 1K tokens$0.12 / 1K tokens
gpt-4-0613(支持函数调用)8,192$0.03 / 1K tokens$0.06 / 1K tokens
gpt-4-32k-061332,768$0.06 / 1K tokens$0.12 / 1K tokens

Token 计数

  • 可以使用tiktoken 计算原始字符串对应的 token 数;这篇关于ChatGPT如何计算token数的科普文章值得一读
    import tiktokendef num_tokens_from_string(string: str, encoding_name: str) -> int:"""Returns the number of tokens in a text string."""encoding = tiktoken.get_encoding(encoding_name)num_tokens = len(encoding.encode(string))return num_tokensnum_tokens_from_string("tiktoken is great!", "cl100k_base")
    

代码实现

这里利用 Gradio 实现 Web UI

Gradio介绍

Gradio是一个用于构建交互式机器学习应用程序的Python库,可以快速构建和部署交互式UI,方便与机器学习模型进行交互。Gradio提供了一组简单的API,可以轻松地将代码转化为一个Web应用程序,可以让其他人通过网页界面与模型进行交互。

Gradio支持创建各种类型的交互式UI,例如文本输入框、滑块、下拉菜单等,以及支持多种数据类型,例如图像、音频、视频和表格数据。Gradio还提供了内置的预处理和后处理功能,以确保的输入和输出数据格式正确。

基本的问答实现

使用API将用户的输入发送到OpenAI模型中,然后将模型生成的响应返回给用户,从而实现问答。

import gradio as gr
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")def get_completion(input_text):completion = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",messages=[{"role": "user", "content": f"{input_text}"}])return completion.choices[0].message["content"]def chatbot(input_text):response = get_completion(input_text)return responseiface = gr.Interface(fn=chatbot, inputs="text", outputs="text", title="Chatbot", encoding="utf-8")
iface.launch(share=True)

多轮对话实现

在问答的基础上更进一步,在每个轮次中保留用户之前的输入和模型生成的响应,以便将其传递给下一轮对话,这种方式可以实现更加自然的对话流程,并提供更好的用户体验。

import os
import openai
import gradio
openai.api_key = os.getenv("OPENAI_API_KEY")history_messages = []
def api_calling(input_text, history_conversation):if history_conversation:history_messages.extend([{"role": "user", "content": f"{history_conversation[-1][0]}"},{"role": "assistant", "content": f"{history_conversation[-1][1]}"}])message = history_messages+[{"role": "user", "content": f"{input_text}"}]completion = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",          messages=message,max_tokens=1024,n=1,stop=None,temperature=0.5,)return completion.choices[0].message["content"]def message_and_history(input, history):history = history or []output = api_calling(input, history)history.append((input, output))return history, historyblock = gradio.Blocks(theme=gradio.themes.Monochrome())
with block:gradio.Markdown("""<h1><center>🤖️对话机器人</center></h1>""")chatbot = gradio.Chatbot()message = gradio.Textbox(placeholder="输入你的问题")state = gradio.State()submit = gradio.Button("发送")submit.click(message_and_history,inputs=[message, state],outputs=[chatbot, state])
block.launch(share=True, debug=True)

指定功能的机器人

通过 预设Prompt 的方式实现,当前看到的 99% 的多功能集成平台都是用这种方式。

  • 建议使用英文设置预设提示词
  • 使用类似If asked about others please say 'I am only Chinese translator'的语句进行初级的提示泄漏预防

使用之前请添加图片描述

使用之后
请添加图片描述

import gradio as gr
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")PROMPT_ROLE = """
I want you to act as an Chinese translator, spelling corrector and improver. \n
I will speak to you in any language and you will detect the language,\n 
translate it and answer in the corrected and improved version of my text, in Chinese.\n 
Keep the meaning same, but make them more literary. I want you to only reply the correction,\n
the improvements and nothing else, do not write explanations. If asked about others please say 'I am only Chinese translator'
"""
def get_completion(input_text):message = [{"role": "system", "content": PROMPT_ROLE}]message.append({"role": "user", "content": f"{input_text}"})completion = openai.ChatCompletion.create(model="gpt-3.5-turbo-0613",messages=message,)return completion.choices[0].message["content"]def chatbot(input_text):response = get_completion(input_text)return responseiface = gr.Interface(fn=chatbot, inputs="text", outputs="text", title="🤖️中文翻译", encoding="utf-8")
iface.launch(share=True, debug=True)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021创新科技项目申报书找谁写,项目申报申请书怎么写

企业在申请创新科技项目的时候&#xff0c;时需要提交相关的项目申报书的&#xff0c;而对于很多企业来说&#xff0c;他们感到头疼的是2021创新科技项目申报书找谁写、怎么写。在这里&#xff0c;就为大家分享关于项目申报书的具体撰写技巧&#xff0c;一起来看看吧。 关于202…

科研项目补贴申报书范例,申请研发补助找谁写

我们在申请科研项目补贴的时候&#xff0c;需要提交相关的项目申报书&#xff0c;而对于很多朋友来说&#xff0c;其最为难的事情可能就在于项目申报书上。这里&#xff0c;为了方便大家解决这一问题&#xff0c;特别为大家分享关于科研项目补贴申报书范例&#xff0c;一起来看…

第二批!四川省科技计划项目任务书和纸质申报书相关流程要求材料

关于第二批批签订、报送2022年四川省科技计划项目任务书和纸质申报书流程时间和申请事项整理如下&#xff0c;小编已经为你们整理了相关的信息&#xff0c;符合条件想申报或者对此有疑问的欢迎致电小编。 一、四川省科技计划项目任务书和纸质申报书填报审核流程 &#xff08;一…

基于Java科研项目申报管理系统

目前高校的科研项目管理的管理大多还采用Excel软件&#xff0c;word等办公软件进行大量的数据汇总及处理&#xff0c;但由于其操作性和实用性不强&#xff0c;严重制约了高校科研管理工作的规范化和质量化发展&#xff0c;而且也严重影响高校领导及时利用科研信息进行决策的水平…

《计算机工程与应用》11月最新投稿经验分享

我的文章最早四月份投的是《中国图象图形学报》&#xff0c;历经三个月终审被拒&#xff0c;紧接着就投了《计算机工程与应用》&#xff0c;然而很快就被拒稿了&#xff0c;说实话有些打击人。因为秋招找工作的原因&#xff0c;这篇论文就被搁置了&#xff0c;十月份开始大修论…

期刊论文添加基金项目、作者简介

一、点击工具栏中【视图】&#xff0c;选择【草稿】 二、鼠标光标放到作者后&#xff08;其实第一页哪里都可以&#xff09;&#xff0c;点击【引用】➡【脚注下方的扩展符号】 三、脚注下方的扩展符号点击后弹出【脚注和尾注】对话框&#xff0c;点击【自定义标记】后面【符号…

【竞赛篇-新苗申报书撰写(四千字总结建议)】浙江省新苗人才计划申报书撰写经验分享及格式要求

本文只介绍新苗申报书撰写&#xff0c;更多关于新苗内容可以看我的 相关专栏 个人曾立项过3项新苗&#xff0c;在此将之前写申报书的经验&#xff0c;结合学院里已经立项的其他若干份材料的优点&#xff0c;对新苗申报书撰写进行总结。主要是给没有思路的提示一下每一块的思路&…

如何下载国家自然科学基金申请书的模板

首先&#xff0c;打开国家自然科学基金的登录界面&#xff08;账号找单位的科研秘书注册索取&#xff09;&#xff1a; 国家自然科学基金网络信息系统人员登录平台https://isisn.nsfc.gov.cn/pmpweb/login 登录后如下图所示&#xff1a; 除了第一行的个人成果&#xff0c;基本…

让小米成为印度第一的“头号功臣”,9 年后宣布离职!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 2010 年时&#xff0c;可能谁也不曾想过&#xff0c;彼时在中关村刚刚起步的小米&#xff0c;如今会成为全球知名手机厂商、甚至销量还一度超越苹果跃升全球第二——这一切的背后&#xff0c;离不开许…

火爆的文字游戏你玩了吗?「GitHub 热点速览 v.22.06」

作者&#xff1a;HelloGitHub-小鱼干 不知道你有没有被 Wordle 这款游戏刷屏&#xff0c;在本期热点速览的特推部分选了一个 React 编写的开源版本同你分享&#xff0c;而本次公众号摘要也是一个提示&#xff0c;&#x1f914; 只不过这个只能盲猜了。别小瞧 Wordle 这个游戏&a…

登录(实时验证手机格式、验证码)

思路: 动态验证手机号格式:利用计算属性会根据内容的变化而调用的特点,将表单绑定v-model&#xff0c;在计算属性中,利用正则不断检验手机格式,正确返回true验证码:当手机号格式正确时,点击才有效,利用时间制造三元运算符改变验证码的文本内容,且倒计时期间,再次点击无效代码示…

「2021年」国内主流短信验证码平台综合评测

「2021年」国内主流短信验证码平台综合评测 “ 目前市面上主营短信验证码业务的平台有哪几家、手机验证码平台哪个好&#xff0c;它们提供哪些短信验证码服务&#xff0c;短信发送的速度、送达率和稳定性等技术性能如何&#xff0c;短信收费价格多少钱。今天通过评测阿里云、梦…

网页版滑动验证码+短信验证码(史上最全版)

PC版滑动验证的实现 简介 滑动验证是基于人机识别技术开发的智能验证码产品。用户通过简单的右滑交互&#xff0c;无需思考即可通过验证。 资源引入说明 使用PC版滑动验证码&#xff0c;需要引入以下js资源&#xff0c;为保证服务功能最优&#xff0c;官方会定期迭代升级线上…

百度api验证码识别

在爬虫操作中难免会遇到文字验证码识别&#xff0c;处理方法有很多这次要说得是百度api的调用来对文字进行识别。分两步走第一&#xff1a;百度AI开放平台注册并建立自己的项目。第二&#xff1a;写代码。 百度AI平台创建项目 创建自己的账号&#xff0c;登录之后出现页面如下…

2021年11月最新搜狗验证码识别,6位全对正确率高达96%

训练数据准备 标记数据是最花费时间的事情。最开始手工标记验证码1万条&#xff0c;训练后正确率在50%左右。然后写写代码使用这种低正确率的去自动标记。使用搜狗自动验证&#xff0c;来实现自动标记。逐渐积累数据量&#xff0c;后期只需要人工标记错误验证码就行。这样可以大…

ChatGPT风口当下,我把收藏了两年的嵌入式AI资源学习笔记,全分享给大家(附代码/视频/学习规划)...

“ChatGPT可怕的是&#xff0c;它会将世界的命运重新洗牌” 人类已经历3次超级工具的“革命”&#xff0c;每一次都重塑了世界新的格局。 第一个降临的超级工具就是互联网&#xff0c;它用虚拟的聚合&#xff0c;打开了现实的距离&#xff0c;将地球压缩成村落。极大程度的模糊…

MXNet的机器翻译实践《编码器-解码器(seq2seq)和注意力机制》

机器翻译就是将一种语言翻译成另外一种语言&#xff0c;输入和输出的长度都是不定长的&#xff0c;所以这里会主要介绍两种应用&#xff0c;编码器-解码器以及注意力机制。 编码器是用来分析输入序列&#xff0c;解码器用来生成输出序列。其中在训练时&#xff0c;我们会使用一…

chatgpt赋能python:Python内置函数大全——68个内置函数介绍

Python内置函数大全——68个内置函数介绍 Python是一种跨平台、简单易学的脚本语言&#xff0c;在数据科学、Web开发、人工智能等领域有着广泛的应用。Python的内置函数是Python语言的基础&#xff0c;也是开发者在日常开发中经常使用到的工具之一。本篇文章主要介绍Python的6…

数据分析与数据科学如何为业务赋能 | CDA持证人专访

主持人&#xff1a;王海龙 视频制作&#xff1a;焦亚丽 采访嘉宾&#xff1a;CDA Level 3 持证人 曾津 编辑&#xff1a;Mika 主持人&#xff1a; 2023 CDAS「心中有数」峰会&#xff0c;举办在即。 举办前&#xff0c;我们邀请到了CDAS的峰会演讲嘉宾——数据分析行业大牛曾…