赞
踩
OpenAI API
是OpenAI
提供的一种人工智能接口,可以通过向API
发送请求来调用OpenAI
的强大模型。使用OpenAI
API
可以实现各种人工智能应用,包括自然语言处理、文本生成、图像识别等。
命令行输入以下命令
pip install openai
python
脚本中导入openai
import openai
终端terminal
输出结果
默认模型:gpt-3.5-turbo
import openai openai.api_key = '第一步申请到的key' # MODEL_NAME = "gpt-4" MODEL_NAME = "gpt-3.5-turbo" def test_openai_api(question): rsp = openai.ChatCompletion.create( model = MODEL_NAME, messages=[ {"role": "system", "content": "你是一个资深算法工程师"}, {"role": "user", "content": quesiton} ] ) print(rsp) # 返回内容 print(rsp.get("choices")[0]["message"]["content"]) # 回答总token数 print(rsp.get("usage")["total_tokens"]) question = "唐宋八大家是谁?" test_openai_api(question)
print(rsp.get("choices")[0]["message"]["content"])
token
数print(rsp.get("usage")["total_tokens"])
4000
, 单位是token
; **一个英文算1个token
, 一个汉字算2个token
question = "唐宋八大家是谁?" openai_api(question) 唐宋八大家是指唐代和宋代两个时期的八位文学家,他们被公认为当时文坛的顶尖人物。他们分别是: 1. 唐代: - 韩愈:以其雄辩的辞章和力倡旧学而闻名。 - 柳宗元:以其深厚的文学才华和政治见解而著名。 - 欧阳修:以其兼具文学才华和政治才能而广受赞誉。 - 范仲淹:以其豪放的文风和儒家学说的推崇而广为人知。 2. 宋代: - 苏东坡(苏轼):以其豪放不羁的文风和广博的才华而名声大噪。 - 王安石:以其新法变法和推行新学而备受争议。 - 蔡京:以其文坛地位和势力而引起很多争议和争议。 - 曾巩:以其尊儒重教的立场和深厚的文学造诣而闻名。 这些八位学者都对当时的文学和政治有着重要的影响,并且他们的作品在中国文学史上具有重要地位。 417
知识型内容错误很多,所以gpt-3.5-turbo
模型的正确性并不高。ChatGPT
模型内部应该使用的是davici
模型。
def get_response(self, question):
# 用户的问题加入到message
self.messages.append({"role": "user", "content": question})
# 问chatgpt问题的答案
rsp = openai.ChatCompletion.create(
model=self.model,
messages=self.messages,
)
answer = rsp.get("choices")[0]["message"]["content"]
# 得到的答案加入message,多轮对话的历史信息
self.messages.append({"role": "assistant", "content": answer})
return answer
import os import json import openai import gradio as gr default_model = "gpt-3.5-turbo" class ChatGPT: def __init__(self, model ,init_system={"role": "system", "content": "你是一个AI助手"}, save_message=False, ): self.messages = [] self.init_system = init_system self.model = model self.messages.append(init_system) # 开启此项,须告知用户 self.save_message = save_message self.filename="./user_messages.json" def ask_gpt(self): rsp = openai.ChatCompletion.create( model=self.model, messages=self.messages ) return rsp.get("choices")[0]["message"]["content"] def get_response(self, question): """ 调用openai接口, 获取回答 """ # 用户的问题加入到message self.messages.append({"role": "user", "content": question}) # 问chatgpt问题的答案 rsp = openai.ChatCompletion.create( model=self.model, messages=self.messages, ) answer = rsp.get("choices")[0]["message"]["content"] # 得到的答案加入message,多轮对话的历史信息 self.messages.append({"role": "assistant", "content": answer}) return answer def clean_history(self): """ 清空历史信息 """ self.messages.clear() self.messages.append(self.init_system) openai.api_key = "your openai api key" MODEL_NAME = 'gpt-3.5-turbo' # 自定义system INIT_MSG = {"role": "system", "content": "你是一个资深算法工程师."} # 设置端口号,默认7560,遇冲突可自定义 SERVER_PORT = 7560 # 调用gpt的bot chatgpt = ChatGPT(MODEL_NAME, INIT_MSG) def predict(input, chatbot): """ 调用openai接口,获取答案 """ chatbot.append((input, "")) # 找chatgpt要答案 response = chatgpt.get_response(input) chatbot[-1] = (input, response) return chatbot def reset_user_input(): return gr.update(value='') def reset_state(): chatgpt.clean_history() return [] def main(): with gr.Blocks() as demo: gr.HTML("""<h1 align="center">{}</h1>""".format(MODEL_NAME)) # gradio的chatbot chatbot = gr.Chatbot() with gr.Row(): with gr.Column(scale=4): with gr.Column(scale=50): user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style( container=False) with gr.Column(min_width=32, scale=1): submitBtn = gr.Button("Submit", variant="primary") with gr.Column(scale=1): emptyBtn = gr.Button("Clear History") # 提交问题 submitBtn.click(predict, [user_input, chatbot], [chatbot], show_progress=True) submitBtn.click(reset_user_input, [], [user_input]) # 清空历史对话 emptyBtn.click(reset_state, outputs=[chatbot], show_progress=True) demo.queue().launch(share=False, inbrowser=True, server_port=SERVER_PORT) if __name__ == '__main__': main()
#安装gradio
pip install gradio
#运行.py文件
python gradioapi.py
input
中输入问题,output
文本框输出答案。
每次回答不同且答案错误很多。
#安装streamlit
pip install streamlit
#运行.py文件
streamlit run streamapi.py
import openai import streamlit as st from streamlit_chat import message #申请的api_key openai.api_key = "your openai api key" def generate_response(prompt): completion = openai.Completion.create( model="text-davinci-003", #'gpt-3.5-turbo', prompt=prompt, max_tokens=1024, temperature=0.6 ) message=completion.choices[0].text return message st.markdown("#### 我是ChatGPT聊天机器人,我可以回答您的任何问题!") if 'generated' not in st.session_state: st.session_state['generated'] = [] if 'past' not in st.session_state: st.session_state['past'] = [] user_input=st.text_input("请输入您的问题:",key='input') if user_input: output=generate_response(user_input) st.session_state['past'].append(user_input) st.session_state['generated'].append(output) if st.session_state['generated']: for i in range(len(st.session_state['generated'])-1, -1, -1): message(st.session_state["generated"][i], key=str(i)) message(st.session_state['past'][i], is_user=True, key=str(i)+'_user')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。