赞
踩
文章首发于博客 OpenAI 接口实践
OpenAI的接口文档十分详细,包括对话补全,文本补全,代码补全等等信息,也包含了最佳生产实践,最佳安全实践等篇章,通读之后十分受用,推荐大家前往阅读。本文就是在接口文档的基础上,将常见的三种OpenAI 接口套壳应用代码展示出来,以帮助读者实现自己的工具。
提供了一个API 状态页面,可以看到接口实时延迟,以及出现大面积宕机时会显示公告。
模型名称 | context max tokens | 输入价格 | 输出价格 |
---|---|---|---|
gpt-3.5-turbo | 4096 | $0.0015 / 1K tokens | $0.002 / 1K tokens |
gpt-3.5-turbo-16k | 16,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-0613 | 16,384 | $0.003 / 1K tokens | $0.004 / 1K tokens |
gpt-4 | 8,192 | $0.03 / 1K tokens | $0.06 / 1K tokens |
gpt-4-32k | 32,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-0613 | 32,768 | $0.06 / 1K tokens | $0.12 / 1K tokens |
import tiktoken
def 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_tokens
num_tokens_from_string("tiktoken is great!", "cl100k_base")
这里利用 Gradio 实现 Web UI
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 response iface = 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, history
block = gradio.Blocks(theme=gradio.themes.Monochrome())
with block:
gradio.Markdown("""<h1><center>声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/826989
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。