Heim  >  Artikel  >  Backend-Entwicklung  >  Wie aktiviere ich die Kontextverwaltung in der chatGPT-Python-API?

Wie aktiviere ich die Kontextverwaltung in der chatGPT-Python-API?

王林
王林nach vorne
2023-04-21 19:58:161804Durchsuche

Offizieller Fall:

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

Obwohl das Format angegeben wurde, gibt es keine detaillierte Erklärung. Für erfahrene Entwickler ist es vielleicht leicht, es auf einen Blick zu verstehen, aber ich möchte dieses Kontextmanagement dennoch aussagekräftiger erklären .

Werfen wir zunächst einen Blick auf meinen einfachen Code (die Kontextverwaltung wurde noch nicht aktiviert):

import openai
 
openai.api_key = "你的sk-key"
 
msg = [{"role": "user", "content": "你好chatGPT"}]
 
# 结构化数据并进行提交
completion = openai.ChatCompletion.create(
                # max_tokens = inf # 默认inf 最大令牌数
                presence_penalty = 1, # 惩罚机制,-2.0 到 2.0之间,默认0,数值越小提交的重复令牌数越多,从而能更清楚文本意思
                frequency_penalty = 1, # 意义和值基本同上,默认0,主要为频率
                temperature = 1.0,  # 温度 0-2之间,默认1  调整回复的精确度使用
                n = 1,  # 默认条数1
                user = ids,    # 用户ID,用于机器人区分不同用户避免多用户时出现混淆
                model = "gpt-3.5-turbo",    # 这里注意openai官方有很多个模型
                messages = msg
            )
 
value = completion.choices[0].message.content    # chatGPT返回的数据

Dies ist die grundlegendste Struktur, in der die Parameter Modell und Nachrichten die beiden erforderlichen formalen Parameter sind.

Code zum Hinzufügen von Kontextverwaltung:

import openai
 
openai.api_key = "你的sk-key"
 
msg = [{"role": "system", "content": "你的名字叫玖河AI,你是一个插件,你的开发者是玖河."},
        {"role": "user", "content": "你好chatGPT"},
        {"role": "assistant", "content": "您好,有什么需要我帮忙的问题吗?"},
        {"role": "user", "content": "我的名字叫高启强,我的妹妹叫高启兰,我们是兄妹关系。记住了吗?"}
        {"role": "assistant", "content": "好的,您叫高启强,您的妹妹叫高启兰,是亲兄妹关系。谢谢您提供信息让我更了解你们~"},
        {"role": "user", "content": "你现在在哪里?"},
        {"role": "assistant", "content": "作为一款智能Ai助手,我并没有实际的位置。我只是在云端中运行,在等待用户输入指令时保持睡眠状态。"},
        {"role": "user", "content": "我的妹妹是谁?"},
        {"role": "assistant", "content": "您之前告诉我,您的妹妹叫高启兰。"},
        {"role": "user", "content": "你的名字叫什么?"},
        {"role": "assistant", "content": "我的名字叫玖河AI是一个叫玖河的开发者开发的插件"}
        ]
 
# 结构化数据并进行提交
completion = openai.ChatCompletion.create(
                # max_tokens = inf # 默认inf 最大令牌数
                presence_penalty = 1, # 惩罚机制,-2.0 到 2.0之间,默认0,数值越小提交的重复令牌数越多,从而能更清楚文本意思
                frequency_penalty = 1, # 意义和值基本同上,默认0,主要为频率
                temperature = 1.0,  # 温度 0-2之间,默认1  调整回复的精确度使用
                n = 1,  # 默认条数1
                user = ids,    # 用户ID,用于机器人区分不同用户避免多用户时出现混淆
                model = "gpt-3.5-turbo",    # 这里注意openai官方有很多个模型
                messages = msg
            )
 
value = completion.choices[0].message.content    # chatGPT返回的数据

Die folgende Datenstruktur mit aktivierter Kontextverwaltung unterscheidet sich geringfügig von der Datenstruktur ohne Kontextverwaltung:

① System stellt Systemeinstellungen dar (d. h. teilt chatGPT seine Rolle mit)

② Benutzer stellt dar Benutzer

③ Assistent sagte die Antwort von GPT

Es gibt ein paar Punkte, die jedem erwähnt werden müssen, um Fallstricke zu vermeiden!

1. Es wird empfohlen, Nachrichtendaten in Form einer Datenbank zu speichern. Der Vorteil besteht darin, dass die Daten gespeichert werden können und es auch sehr bequem ist, die Daten abzurufen, da ich zunächst nur JSON zum Speichern verwenden wollte , aber nachdem ich lange gekämpft hatte, gab ich auf. Der Nachteil ist, dass das Speichern und Abrufen umständlich ist, da man berücksichtigen muss, dass verschiedene Benutzer unterschiedliche Sitzungen haben.

Zweitens ist zu beachten, dass die Reihenfolge der übermittelten Datenstrukturen von oben nach unten erfolgen muss, da sonst ChatGPT verwirrt wird. Wenn Sie möchten, dass diese Einstellung beibehalten wird, dann Fügen Sie beim Absenden einfach Systemdaten zum ersten Listenelement hinzu.

Drittens gibt es noch einen weiteren wichtigen Punkt: Die übermittelten Daten werden in Token einschließlich der ChatGPT-Antwort umgewandelt (bis zu 4096 Token). Wenn Sie möchten, dass die Kontextverwaltung mehr Korpus speichert, versuchen Sie zu diesem Zeitpunkt, sie zu erhöhen den Inhalt des Gesprächs zwischen Ihnen so weit wie möglich (es wird auch Ihre Token schneller verbrauchen).

4. Stand 14. März 2023: Der Mitgliedspreis von chatGPT beträgt 20 US-Dollar/Monat und die Token werden volumenabhängig berechnet. Laienhaft ausgedrückt ist es wie bei einer Mobiltelefonkarte. Es gibt eine monatliche Gebühr und Anrufe werden separat abgerechnet. Der Vorteil einer Mitgliedschaft bei chatGPT Plus besteht darin, dass die Geschwindigkeit schneller und stabiler ist. Die kostenlose Version kann ebenfalls verwendet werden, die Geschwindigkeit ist jedoch langsamer, instabil und kann leicht abstürzen.

Das obige ist der detaillierte Inhalt vonWie aktiviere ich die Kontextverwaltung in der chatGPT-Python-API?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen