Experimentos de chat, simplificado
?
ChatLab es un paquete de Python que facilita el experimento con los modelos de chat de OpenAi. Proporciona una interfaz simple para chatear con los modelos y una forma de registrar funciones que se pueden llamar desde el modelo de chat.
¡Lo mejor aún, es interactivo en el cuaderno!
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" )Aporte:
{}Producción:
" tails " It landed on tails!En el cuaderno, el texto se transmitirá en una salida de Markdown y las entradas y salidas de funciones son una buena pantalla colapsible, como con los complementos ChatGPT.
TODO: incluya GIF/MP4 de esto en acción
pip install chatlab Deberá establecer su variable de entorno OPENAI_API_KEY . Puede encontrar su clave API en su página de cuenta de OpenAI. Recomiendo configurarlo en un archivo .env cuando trabaje localmente.
En los entornos de cuaderno alojados, configúrelo en sus secretos para mantenerlo a salvo de los ojos que se indican.
Chat hacer ? Donde Chat lo llevan el siguiente nivel es con las funciones de chat . Puede
ChatPuede recordar este tipo de comportamiento de los complementos ChatGPT. Ahora, puede llevar esto aún más lejos con su propio código personalizado.
Como ejemplo, le damos a los modelos de idiomas grandes la capacidad de contar el tiempo.
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 ] = NoneDesglosemos esto.
what_time es la función a la que vamos a proporcionar acceso. Su documento forma la description del modelo, mientras que el esquema proviene de la base Pydantic BaseModel llamada WhatTime .
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime ) Después de eso, podemos llamar chat con cadenas directas (que se convierten en mensajes de usuario) o utilizando creadores de mensajes simples de chatlab llamados user and system .
await chat ( "What time is it?" )Aporte:
{}Producción:
" 11:19 AM " The current time is 11:19 AM. El paquete de chatlab exporta
Chat La clase Chat es la forma principal de chatear usando los modelos de OpenAI. Mantiene un historial de su chat en Chat.messages .
Chat.submit submit es cómo envía todos los mensajes actualmente construidos a OpenAI. La salida de Markdown mostrará respuestas del 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 Puede registrar funciones con Chat.register Registrarlas para que estén disponibles para el modelo de chat. El documento de la función se convierte en la descripción de la función, mientras que el esquema se deriva del pydantic.BaseModel pasó.
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.messagesLos mensajes en bruto enviados y recibidos a OpenAi. Si alcanza un límite de token, puede eliminar mensajes antiguos de la lista para dejar espacio para más.
chat . messages = chat . messages [ - 100 :]human / userEstas funciones crean un mensaje del usuario al modelo de chat.
from chatlab import human
human ( "How are you?" ){ "role" : " user " , "content" : " How are you? " }narrate / system Los mensajes system , también llamados narrate en chatlab , le permiten dirigir el modelo en una dirección. Puede usarlos para proporcionar contexto sin ser visto por el usuario. Un uso común es incluirlo como contexto inicial para la conversación.
from chatlab import narrate
narrate ( "You are a large bird" ){ "role" : " system " , "content" : " You are a large bird " }Este proyecto utiliza poesía para la gestión de dependencias. Para comenzar, clona el repositorio y corra
poetry install -E dev -E test Usamos ruff y mypy .
Las solicitudes de extracción son bienvenidas. Para cambios importantes, abra primero un problema para discutir lo que le gustaría cambiar.