chatgpt寫的python代碼,如何用python訪問chatgpt

 

 這是讓chatgpt自己寫的一段代碼

##請寫出pthon代碼。我需要用python,調用openai api訪問chatgpt

```python
import openai
import re

# 在openai平臺上獲取API密鑰
openai.api_key = "YOUR_API_KEY"

# 選擇模型和引擎
model_engine = "text-davinci-002"
prompt = "Hello, how can I help you today?"

# 設置初始上下文
context = None

# 設定用戶輸入
user_input = ""

# 進入對話循環
while user_input.lower() != "exit":
    
    # 根據上下文和引擎的選擇,發送請求到openai
    response = openai.Completion.create(
      engine=model_engine,
      prompt=prompt,
      temperature=0.5,
      max_tokens=100,
      top_p=1,
      frequency_penalty=0,
      presence_penalty=0,
      stop=None,
      context=context,
    )

    # 解析openai響應,獲取機器人的回覆
    answer = response.choices[0].text.strip()
    answer = re.sub('[^0-9a-zA-Z.\n\!\?\s]+', '', answer)
    
    # 打印機器人回覆
    print("Bot:", answer)
    
    # 更新上下文
    context = response.choices[0].context
    
    # 要求用戶輸入
    user_input = input("You: ")
    
    # 將用戶輸入添加到上下文中
    if user_input.strip() != "":
        context += "\n" + user_input.strip()
        
    # 添加用戶輸入作爲下一個請求的前綴
    prompt += "\n" + user_input.strip()
```

 

請給我展示完整的python代碼。基於gpt-3.5-turbo,我需要用python去調用openai api 和 chatgpt 進行連續對話。在字符長度超過限制之後,需要能夠讓chatgpt繼續對話。並且代碼要支持導出對話內容到excel文件

好的,這是一個基於OpenAI API和GPT-3的Python代碼,可以進行連續對話並支持導出到Excel文件:

```python
import openai
import pandas as pd

# set OpenAI API key
openai.api_key = "YOUR_API_KEY"

# create a new conversation with GPT-3
def start_conversation(prompt):
    conversation = openai.Completion.create(
        engine="davinci", prompt=prompt, max_tokens=1024, n=1,stop=None,temperature=0.5,
    )
    return conversation.choices[0].text

# continue conversation with GPT-3
def continue_conversation(prompt, chat_history):
    conversation = openai.Completion.create(
        engine="davinci", prompt=prompt, max_tokens=1024, n=1,stop=None,temperature=0.5,
        context=chat_history,
    )
    return conversation.choices[0].text

# export conversation to Excel file
def export_to_excel(conversation):
    df = pd.DataFrame(conversation, columns=["User", "GPT-3"])
    df.to_excel("conversation.xlsx", index=False)

# start the conversation loop
def chat_with_gpt():
    chat_history = ""
    while True:
        user_input = input("You: ")
        prompt = f"User: {user_input}\nGPT-3:"
        if len(chat_history) > 0:
            gpt_response = continue_conversation(prompt, chat_history)
        else:
            gpt_response = start_conversation(prompt)
        print("GPT-3:", gpt_response.strip())
        chat_history += f"\n{prompt} {gpt_response.strip()}"
        if len(chat_history) > 8000:
            export_to_excel(chat_history)
            chat_history = ""

chat_with_gpt()
```

在這個代碼中,我們使用了OpenAI的Python SDK來調用GPT-3 API。在 `start_conversation` 和 `continue_conversation` 函數中,我們使用 `openai.Completion.create()` 方法向 GPT-3 發送請求,獲取機器人的響應。

在 `chat_with_gpt` 函數中,我們首先讓用戶輸入一個字符串作爲對話的開頭,然後構建一個 GPT-3 可以理解的請求格式,通過調用 `start_conversation` 或 `continue_conversation` 方法來獲取機器人的響應。每次對話結束後,我們將用戶的輸入和機器人的響應保存到 `chat_history` 變量中。

在 `export_to_excel` 函數中,我們將 `chat_history` 變量轉換爲 Pandas 數據幀,並將其導出到名爲 `conversation.xlsx` 的 Excel 文件中。

在 `chat_with_gpt` 函數的末尾,我們檢查 `chat_history` 的長度是否超過了 GPT-3 API 的限制(即 8000 個字符),如果超過了,我們將其導出到 Excel 文件中,並清空 `chat_history`。這樣做可以防止 `chat_history` 變量過大,導致程序崩潰。

debug msg-----003
請輸入您的內容:請給我展示完整的python代碼。基於gpt-3.5-turbo,我需要用python去調用openai api 和 chatgpt 進行連續對話。在字符長度超過限制之後,需要能夠讓chatgpt繼續對話。並且代碼要支持導出對話內容到excel文件
debug msg-----001

 

請輸入您的內容:請給我展示完整的python代碼。基於gpt-3.5-turbo,我需要用python去調用openai api 和 chatgpt 進行連續對話。在字符長度超過限制之後,需要能夠讓chatgpt繼續對話。並且代碼要支持導出對話內容到excel文件
debug msg-----001
debug msg-----002
answer >200.is: 2130

好的,這是一個基於GPT-3.5 Turbo的Python代碼,可以進行連續對話並支持導出到Excel文件:

```python
import openai
import pandas as pd

# set OpenAI API key
openai.api_key = "YOUR_API_KEY"

# create a new conversation with GPT-3.5 Turbo
def start_conversation(prompt):
    response = openai.Completion.create(
        engine="text-davinci-002", prompt=prompt, max_tokens=2048, n=1,stop=None,temperature=0.7,
    )
    return response.choices[0].text

# continue conversation with GPT-3.5 Turbo
def continue_conversation(prompt, chat_history):
    response = openai.Completion.create(
        engine="text-davinci-002", prompt=prompt, max_tokens=2048, n=1,stop=None,temperature=0.7,
        context=chat_history,
    )
    return response.choices[0].text

# export conversation to Excel file
def export_to_excel(conversation):
    df = pd.DataFrame(conversation, columns=["User", "GPT-3.5 Turbo"])
    df.to_excel("conversation.xlsx", index=False)

# start the conversation loop
def chat_with_gpt():
    chat_history = ""
    while True:
        user_input = input("You: ")
        prompt = f"User: {user_input}\nGPT-3.5 Turbo:"
        if len(chat_history) > 0:
            gpt_response = continue_conversation(prompt, chat_history)
        else:
            gpt_response = start_conversation(prompt)
        print("GPT-3.5 Turbo:", gpt_response.strip())
        chat_history += f"\n{prompt} {gpt_response.strip()}"
        if len(chat_history) > 8000:
            export_to_excel(chat_history)
            chat_history = ""

chat_with_gpt()
```

在這個代碼中,我們使用了OpenAI的Python SDK來調用GPT-3.5 Turbo API。在 `start_conversation` 和 `continue_conversation` 函數中,我們使用 `openai.Completion.create()` 方法向 GPT-3.5 Turbo 發送請求,獲取機器人的響應。

在 `chat_with_gpt` 函數中,我們首先讓用戶輸入一個字符串作爲對話的開頭,然後構建一個 GPT-3 可以理解的請求格式,通過調用 `start_conversation` 或 `continue_conversation` 方法來獲取機器人的響應。每次對話結束後,我們將用戶的輸入和機器人的響應保存到 `chat_history` 變量中。

在 `export_to_excel` 函數中,我們將 `chat_history` 變量轉換爲 Pandas 數據幀,並將其導出到名爲 `conversation.xlsx` 的 Excel 文件中。

在 `chat_with_gpt` 函數的末尾,我們檢查 `chat_history` 的長度是否超過了 GPT-3.5 Turbo API 的限制(即 8000 個字符),如果超過了,我們將其導出到 Excel 文件中,並清空 `chat_history`。這樣做可以防止 `chat_history` 變量過大,導致程序崩潰。

debug msg-----003
請輸入您的內容:

 

以下是可能符合您要求的代碼示例。請注意,這只是一個概念證明,您需要根據您的具體需求進行修改和優化。此外,您需要註冊OpenAI並獲得API密鑰才能使用此代碼。最後,導出到Excel的部分需要pandas和openpyxl庫。如果您還沒有安裝這些庫,請在終端中運行“pip install pandas openpyxl”安裝它們。

```python
import openai
import pandas as pd

# OpenAI API身份驗證
openai.api_key = "YOUR_API_KEY"

# chatgpt模型ID
model_engine = "text-davinci-002"

# 初始對話
conversation_history = ""

# 對話進行次數限制
MAX_CONVERSATION_LENGTH = 200

# 響應prompt的函數
def get_response(prompt, conversation_history, engine):
    # 截取前面的對話長度
    prompt = conversation_history + prompt[-MAX_CONVERSATION_LENGTH:]
    response = openai.Completion.create(
        engine=engine,
        prompt=prompt,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.5,
    )

    # 獲取響應和新的對話歷史記錄
    response_text = response.choices[0].text
    new_conversation_history = prompt + response_text

    return response_text, new_conversation_history


# 連續對話,直到用戶停止
while True:
    prompt = input("You: ")
    if prompt.lower() in ["bye", "goodbye", "exit", "quit"]:
        break
    else:
        response, conversation_history = get_response(prompt, conversation_history, model_engine)
        print("Chatbot: ", response)

# 將對話歷史記錄導出到Excel
df = pd.DataFrame({"User": [], "Chatbot": []})
for i, line in enumerate(conversation_history.split("\n")):
    if i % 2 == 0:
        df = df.append({"User": line}, ignore_index=True)
    else:
        df.iloc[-1]["Chatbot"] = line

df.to_excel("conversation_history.xlsx", index=False)
```

debug msg-----003
請輸入您的內容:

 

如果單次回答超過字符限制,如何讓 chatgpt繼續回答,請繼續完善代碼
debug msg-----001
debug msg-----002
answer >200.is: 2041

在我們的示例代碼中,我們已經在響應prompt的函數中添加了一個截斷前面對話的長度的功能。但是,如果單次響應超過最大字符限制,我們需要更復雜的解決方案。以下是一個更完整的代碼示例,可以在單次響應超過最大字符限制時,分割成多個響應,然後將其連接起來,以確保 chatgpt 繼續回答。

```python
import openai
import pandas as pd

# OpenAI API身份驗證
openai.api_key = "YOUR_API_KEY"

# chatgpt模型ID
model_engine = "text-davinci-002"

# 初始對話
conversation_history = ""

# 對話進行次數限制
MAX_CONVERSATION_LENGTH = 200

# 單次響應限制
MAX_RESPONSE_LENGTH = 1024

# 響應prompt的函數
def get_response(prompt, conversation_history, engine):
    # 截取前面的對話長度
    prompt = conversation_history + prompt[-MAX_CONVERSATION_LENGTH:]

    # 迭代直到響應小於單次響應限制
    response = ""
    while len(response) < MAX_RESPONSE_LENGTH:
        response_temp = openai.Completion.create(
            engine=engine,
            prompt=prompt,
            max_tokens=MAX_RESPONSE_LENGTH - len(response),
            n=1,
            stop=None,
            temperature=0.5,
        )

        # 獲取響應和新的對話歷史記錄
        response_temp_text = response_temp.choices[0].text
        new_conversation_history = prompt + response

        # 如果響應長度超過單次響應限制,則分割成多個響應
        if len(response_temp_text) > MAX_RESPONSE_LENGTH - len(response):
            response_temp_text = response_temp_text[:MAX_RESPONSE_LENGTH - len(response)]
            conversation_history += response_temp_text
            break
        else:
            response += response_temp_text

    return response, new_conversation_history


# 連續對話,直到用戶停止
while True:
    prompt = input("You: ")
    if prompt.lower() in ["bye", "goodbye", "exit", "quit"]:
        break
    else:
        response, conversation_history = get_response(prompt, conversation_history, model_engine)
        print("Chatbot: ", response)

# 將對話歷史記錄導出到Excel
df = pd.DataFrame({"User": [], "Chatbot": []})
for i, line in enumerate(conversation_history.split("\n")):
    if i % 2 == 0:
        df = df.append({"User": line}, ignore_index=True)
    else:
        df.iloc[-1]["Chatbot"] = line

df.to_excel("conversation_history.xlsx", index=False)
```

現在,當 chatgpt 的單次響應超過最大字符限制時,將分割成多個響應,並在連接時保持對話歷史記錄的連續性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章