Maison  >  Article  >  développement back-end  >  Comment activer la gestion du contexte dans l'API Python chatGPT ?

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

王林
王林avant
2023-04-21 19:58:161803parcourir

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer