ホームページ  >  記事  >  バックエンド開発  >  chatGPT Python API でコンテキスト管理を有効にする方法は?

chatGPT Python API でコンテキスト管理を有効にする方法は?

王林
王林転載
2023-04-21 19:58:161804ブラウズ

公式ケース:

# 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?"}
    ]
)

形式は示されているものの、詳細な説明はありません。高レベルの開発者なら一目で理解できるかもしれませんが、もう少し言葉で説明したいと思います。 . このコンテキスト管理。

私の簡単なコードを見てみましょう (コンテキスト管理はまだ有効になっていません):

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返回的数据

これは最も基本的な構造であり、パラメーター モデルとメッセージの 2 つが含まれています。必要な書類。

コンテキスト管理を追加するコード:

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返回的数据

コンテキスト管理が有効になっている次のデータ構造は、コンテキスト管理が有効になっていないデータ構造と若干異なります:

① system はシステム設定を表します (また、 chatGPT に自分の役割を伝えるだけです)

② user はユーザーを意味します

③ Assistant は GPT の応答を意味します

落とし穴を避けるために、全員に言及する必要があるいくつかのポイントがあります。

1. メッセージ データをデータベースの形式で保存することをお勧めします。利点は、データを永続化できることです。また、json を使用してデータを取得するのにも非常に便利です。最初は保存しましたが、時間がかかり、やはり諦めましたが、ユーザーごとにセッションが異なることを考慮する必要があるため、保存と取得が不便であることが欠点です。

2. 送信されるデータ構造の順序は上から下でなければならないことに注意してください。そうしないと、chatGPT が混乱します。システムはそこにある必要はありません。この設定を維持したい場合は、次のようにします。システム データが送信されるたびに、最初のリスト要素にシステム データを追加するだけです。

3. もう 1 つの重要な点があります: 送信されたデータは、chatGPT が応答するときも含めてトークンに計算されます (最大 4096 トークン)。コンテキスト管理により多くのコーパスを記憶させたい場合は、データを送信するときに次のようにしてください。できるだけ会話の内容を増やしてください(トークンの消費も早くなります)。

4. 2023 年 3 月 14 日現在: chatGPT のメンバーシップ価格は月額 20 ドルで、トークンはボリュームに基づいて課金されます。平たく言えば携帯電話カードのようなもので、月額料金があり、通話料も別途かかります。 chatGPT Plus会員になると速度が速く安定するのがメリットで、無料版でも使えますが、速度が遅く不安定でクラッシュしやすいです。

以上がchatGPT Python API でコンテキスト管理を有効にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。