当前位置:   article > 正文

python 调用gpt3.5接口问答教程_gpt3,5api接口

gpt3,5api接口

openai介绍

OpenAI APIOpenAI提供的一种人工智能接口,可以通过向API发送请求来调用OpenAI的强大模型。使用OpenAI API可以实现各种人工智能应用,包括自然语言处理、文本生成、图像识别等。

  • 安装openai库

命令行输入以下命令

pip install openai
  • 1
  • python脚本中导入openai
import openai
  • 1
python调用
本地调用

终端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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 返回内容
print(rsp.get("choices")[0]["message"]["content"])
  • 1
  • 回答总token
print(rsp.get("usage")["total_tokens"])
  • 1
  • 字符限制
    问题+答案<4000, 单位是token; **一个英文算1个token, 一个汉字算2个token
示例1
question = "唐宋八大家是谁?"
openai_api(question)

唐宋八大家是指唐代和宋代两个时期的八位文学家,他们被公认为当时文坛的顶尖人物。他们分别是:

1. 唐代:
   - 韩愈:以其雄辩的辞章和力倡旧学而闻名。
   - 柳宗元:以其深厚的文学才华和政治见解而著名。
   - 欧阳修:以其兼具文学才华和政治才能而广受赞誉。
   - 范仲淹:以其豪放的文风和儒家学说的推崇而广为人知。

2. 宋代:
   - 苏东坡(苏轼):以其豪放不羁的文风和广博的才华而名声大噪。
   - 王安石:以其新法变法和推行新学而备受争议。
   - 蔡京:以其文坛地位和势力而引起很多争议和争议。
   - 曾巩:以其尊儒重教的立场和深厚的文学造诣而闻名。

这些八位学者都对当时的文学和政治有着重要的影响,并且他们的作品在中国文学史上具有重要地位。

417
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

知识型内容错误很多,所以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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
gradio部署和可视化使用

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
示例2
#安装gradio
pip install gradio
#运行.py文件
python gradioapi.py
  • 1
  • 2
  • 3
  • 4

input中输入问题,output文本框输出答案。
在这里插入图片描述
每次回答不同且答案错误很多。
在这里插入图片描述

streamlit部署和可视化使用
#安装streamlit
pip install streamlit
#运行.py文件
streamlit run streamapi.py
  • 1
  • 2
  • 3
  • 4
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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
示例3

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/356882
推荐阅读
相关标签
  

闽ICP备14008679号