Comment activer la gestion du contexte dans l'API Python chatGPT ?

王林
Libérer: 2023-04-21 19:58:16
avant
1842 Les gens l'ont consulté

Cas officiel :

# 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?"}
    ]
)
Copier après la connexion

Bien que le format ait été donné, il n'y a pas d'explication détaillée. Il peut être facile pour les développeurs de haut niveau de le comprendre en un coup d'œil, mais je souhaite quand même expliquer cette gestion du contexte de manière plus éloquente. .

Jetons d'abord un coup d'œil à mon code simple (la gestion du contexte n'a pas encore été activée) :

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返回的数据
Copier après la connexion

Il s'agit de la structure la plus basique, dans laquelle les paramètres modèle et messages sont les deux paramètres formels requis.

Code pour ajouter la gestion du contexte :

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返回的数据
Copier après la connexion

La structure de données suivante avec la gestion du contexte activée est légèrement différente de la structure de données sans elle :

① le système représente les paramètres du système (c'est-à-dire indique à chatGPT son rôle)

② l'utilisateur représente L'utilisateur

③ assistant a déclaré la réponse de GPT

Il y a quelques points qui doivent être mentionnés à tout le monde pour éviter les pièges !

1. Il est recommandé de stocker les données msg sous la forme d'une base de données. L'avantage est que les données peuvent être conservées et il est également très pratique de récupérer les données, car au début je voulais juste utiliser json pour les stocker. , mais après avoir longtemps lutté, j'ai abandonné. L'inconvénient est qu'il n'est pas pratique à stocker et à récupérer, car il faut tenir compte du fait que différents utilisateurs ont des sessions différentes.

Deuxièmement, il convient de noter que l'ordre des structures de données soumises doit être de haut en bas, sinon chatGPT sera confus. Si vous souhaitez conserver ce paramètre, alors à chaque fois. lors de la soumission, ajoutez simplement les données système au premier élément de la liste.

Troisièmement, il y a un autre point important : les données soumises seront calculées en jetons, y compris la réponse chatGPT (jusqu'à 4096 jetons) Si vous souhaitez que la gestion du contexte mémorise plus de corpus, alors lors de la soumission des données, essayez d'augmenter. le contenu de la conversation entre vous autant que possible (cela consommera également vos tokens plus rapidement).

4. Avant le 14 mars 2023 : le prix de l'adhésion à chatGPT est de 20 $ US/mois et les jetons sont facturés en fonction du volume. En termes simples, c'est comme une carte de téléphone portable. Il y a des frais mensuels et les appels sont facturés séparément. L'avantage d'être membre de chatGPT Plus est que la vitesse est plus rapide et plus stable. La version gratuite peut également être utilisée, mais la vitesse est plus lente, instable et facile à planter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!