Ce code Python fournit une implémentation de chatbot avec la gestion de contexte à l'aide de modèles de chat GPT-3.5-Turbo ou GPT-4 d'OpenAI. Le chatbot maintient un historique de conversation et aide à gérer l'état de contexte et la taille des jetons.
ChatStack trouve votre clé API OpenAI via la variable d'environnement OpenAI_API_KEY.
ChatRoleMessage : une classe de données de base pour les messages avec un rôle, du texte et des jetons.SystemMessage : une classe de données pour représenter un message avec le rôle «système».ContextMessage : une classe de données représentant un contexte d'informations supplémentaires pour le modèle.AssistantMessage : une classe de données pour représenter un message avec le rôle «assistant».UserMessage : une classe de données pour représenter un message avec le rôle «utilisateur».ChatContext : une classe qui gère le contexte de conversation et génère des réponses à l'aide de modèles d'interface de message OpenAI.ChatReponse : une classe de données qui contient la réponse du modèle à un message utilisateur ainsi qu'un enregistrement du contexte d'entrée envoyé au modèle et d'autres détails significatifs tels que le modèle utilisé, le nombre de jetons utilisés et le coût estimé de la demande.ChatContext .ChatContext avec la configuration souhaitée.user_message ou user_message_stream avec le texte du message de l'utilisateur pour obtenir une réponse du chatbot.Exemple:
from chatstack import ChatContext
BASE_SYSTEM_PROMPT = "You are a clever bot. Do not apologize, or make excuses. "
BASE_SYSTEM_PROMPT += "Do not mention that you are an AI language model since that is annoying to users."
def main ():
chat_context = ChatContext ( base_system_msg_text = BASE_SYSTEM_PROMPT )
print ( "Welcome to the Chatbot!" )
while True :
user_input = input ( "You: " )
print ( "Chatbot:" )
response = chat_context . user_message ( user_input , stream = True )
print ( response . text )
if __name__ == "__main__" :
main () La classe ChatContext accepte les paramètres suivants:
min_response_tokens : nombre minimum de jetons à réserver pour la réponse d'achèvement du modèle.max_response_tokens : Nombre maximum de jetons pour permettre la réponse d'achèvement du modèle.chat_context_messages : Nombre de messages d'assistant et utilisateur récent à garder en contexte.model : le nom du modèle GPT à utiliser (par défaut: "GPT-3.5-turbo").temperature : la température de la génération de réponse du modèle.base_system_msg_text : le texte du message du système de base pour fournir un contexte pour le modèle.La méthode principale du chatContext est le user_message () qui est utilisée pour assembler le contexte d'entrée du modèle et générer une réalisation.
user_message(msg_text: str) -> ChatResponseCette méthode prend le texte du message d'un utilisateur en entrée et génère une réponse à partir du chatbot à l'aide du contexte de conversation.
user_message_stream(msg_text: str) -> ChatResponse Cette méthode est un générateur qui prend le texte du message d'un utilisateur en entrée et fournit des objets ChatResponse contenant le texte de réponse incrémentiel et cumulatif du chatbot à l'aide du contexte de conversation.
add_message(msg : ChatRoleMessage)Ajoutez un message au contexte de présentation au modèle dans les demandes d'achèvement ultérieures.
msg_text (str): le texte du message de l'utilisateur. ChatResponse : une instance de la classe de données ChatResponse qui inclut le texte de réponse du modèle, les messages d'entrée réels envoyés au modèle et d'autres détails pertinents tels que le nombre de jetons et le prix estimé de l'achèvement.