Expériences de chat, simplifiées
?
ChatLab est un package Python qui facilite l'expérimentation des modèles de chat d'Openai. Il fournit une interface simple pour discuter avec les modèles et un moyen d'enregistrer des fonctions qui peuvent être appelées à partir du modèle de chat.
Mieux encore, il est interactif dans le cahier!
import chatlab
import random
def flip_a_coin ():
'''Returns heads or tails'''
return random . choice ([ 'heads' , 'tails' ])
chat = chatlab . Chat ()
chat . register ( flip_a_coin )
await chat ( "Please flip a coin for me" )Saisir:
{}Sortir:
" tails " It landed on tails!Dans le cahier, le texte diffusera dans une sortie Markdown et des entrées et des sorties de fonction sont un bel affichage pliable, comme avec les plugins ChatGpt.
TODO: Incluez GIF / MP4 de cela en action
pip install chatlab Vous devrez définir votre variable d'environnement OPENAI_API_KEY . Vous pouvez trouver votre clé API sur votre page de compte Openai. Je recommande de le définir dans un fichier .env lorsque vous travaillez localement.
Dans les environnements de cahiers hébergés, définissez-le dans vos secrets pour le garder à l'abri des yeux LLM Prying.
Chat ? Là où Chat est le niveau suivant, c'est avec les fonctions de chat . Tu peux
ChatVous vous souvenez peut-être de ce type de comportement des plugins Chatgpt. Maintenant, vous pouvez aller encore plus loin avec votre propre code personnalisé.
À titre d'exemple, donnons aux grands modèles de langue la possibilité de dire l'heure.
from datetime import datetime
from pytz import timezone , all_timezones , utc
from typing import Optional
from pydantic import BaseModel
def what_time ( tz : Optional [ str ] = None ):
'''Current time, defaulting to UTC'''
if tz is None :
pass
elif tz in all_timezones :
tz = timezone ( tz )
else :
return 'Invalid timezone'
return datetime . now ( tz ). strftime ( '%I:%M %p' )
class WhatTime ( BaseModel ):
tz : Optional [ str ] = NoneDécomposons cela.
what_time est la fonction à laquelle nous allons donner accès. Son docstring forme la description du modèle tandis que le schéma provient du pydantique BaseModel appelé WhatTime .
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime ) Après cela, nous pouvons appeler chat avec des chaînes directes (qui sont transformées en messages utilisateur) ou utiliser des fabricants de messages simples de chatlab nommé user et system .
await chat ( "What time is it?" )Saisir:
{}Sortir:
" 11:19 AM " The current time is 11:19 AM. Le package chatlab exporte
Chat La classe Chat est le principal moyen de discuter en utilisant les modèles d'Openai. Il conserve l'historique de votre chat dans Chat.messages .
Chat.submit submit est la façon dont vous envoyez tous les messages actuellement construits à OpenAI. La sortie de Markdown affichera les réponses de l' assistant .
await chat . submit ( 'What would a parent who says "I have to play zone defense" mean? ' )
# Markdown response inline
chat . messages [ { 'role' : 'user' ,
'content' : 'What does a parent of three kids mean by "I have to play zone defense"?' } ,
{ 'role' : 'assistant' ,
'content' : 'When a parent of three kids says "I have to play zone defense," it means that they...Chat.register Vous pouvez enregistrer des fonctions avec Chat.register pour les mettre à la disposition du modèle de chat. La docstring de la fonction devient la description de la fonction tandis que le schéma est dérivé du pydantic.BaseModel passé.
from pydantic import BaseModel
class WhatTime ( BaseModel ):
tz : Optional [ str ] = None
def what_time ( tz : Optional [ str ] = None ):
'''Current time, defaulting to UTC'''
if tz is None :
pass
elif tz in all_timezones :
tz = timezone ( tz )
else :
return 'Invalid timezone'
return datetime . now ( tz ). strftime ( '%I:%M %p' )
chat . register ( what_time , WhatTime )Chat.messagesLes messages bruts envoyés et reçus à Openai. Si vous atteignez une limite de jeton, vous pouvez supprimer les anciens messages de la liste pour en faire plus.
chat . messages = chat . messages [ - 100 :]human / userCes fonctions créent un message de l'utilisateur vers le modèle de chat.
from chatlab import human
human ( "How are you?" ){ "role" : " user " , "content" : " How are you? " }narrate / system Les messages system , également appelés narrate dans chatlab , vous permettent de diriger le modèle dans une direction. Vous pouvez les utiliser pour fournir un contexte sans être vu par l'utilisateur. Une utilisation courante consiste à l'inclure comme contexte initial pour la conversation.
from chatlab import narrate
narrate ( "You are a large bird" ){ "role" : " system " , "content" : " You are a large bird " }Ce projet utilise la poésie pour la gestion des dépendances. Pour commencer, cloner le repo et courir
poetry install -E dev -E test Nous utilisons ruff et mypy .
Les demandes de traction sont les bienvenues. Pour les changements majeurs, veuillez d'abord ouvrir un problème pour discuter de ce que vous souhaitez changer.