Experimentos de bate -papo, simplificado
?
O Chatlab é um pacote Python que facilita a experiência dos modelos de bate -papo do Openai. Ele fornece uma interface simples para conversar com os modelos e uma maneira de registrar funções que podem ser chamadas no modelo de bate -papo.
Melhor ainda, é interativo no caderno!
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" )Entrada:
{}Saída:
" tails " It landed on tails!No notebook, o texto será transmitido para uma saída e as entradas e saídas de saída do Markdown são uma boa exibição dobrável, como nos plug -ins ChatGPT.
TODO: Inclua GIF/MP4 disso em ação
pip install chatlab Você precisará definir sua variável de ambiente OPENAI_API_KEY . Você pode encontrar sua chave da API na página da conta do OpenAI. Eu recomendo configurá -lo em um arquivo .env ao trabalhar localmente.
Em ambientes de cadernos hospedados, defina -o em seus segredos para mantê -lo a salvo dos olhos do LLM.
Chat pode permitir que você faça? Onde Chat é o próximo nível é com as funções de bate -papo . Você pode
ChatVocê pode se lembrar desse tipo de comportamento dos plugins chatgpt. Agora, você pode levar isso ainda mais longe com seu próprio código personalizado.
Como exemplo, vamos dar aos grandes modelos de idiomas a capacidade de contar o tempo.
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 ] = NoneVamos quebrar isso.
what_time é a função à qual fornecemos acesso. Seu Docstring forma a description do modelo, enquanto o esquema vem do BaseModel pydantic chamado WhatTime .
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime ) Depois disso, podemos ligar para chat com strings diretos (que são transformados em mensagens do usuário) ou usando criadores de mensagens simples do chatlab chamado user e system .
await chat ( "What time is it?" )Entrada:
{}Saída:
" 11:19 AM " The current time is 11:19 AM. O pacote chatlab exporta
Chat A aula Chat é a principal maneira de conversar usando os modelos do OpenAI. Ele mantém um histórico de seu bate -papo em Chat.messages .
Chat.submit submit é como você envia todas as mensagens construídas atualmente para o OpenAI. A saída de marcação exibirá respostas do 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 Você pode registrar funções no Chat.register para disponibilizá -las para o modelo de bate -papo. O docstring da função se torna a descrição da função enquanto o esquema é derivado do pydantic.BaseModel .
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.messagesAs mensagens brutas enviadas e recebidas para o OpenAI. Se você atingir um limite de token, poderá remover mensagens antigas da lista para abrir espaço para mais.
chat . messages = chat . messages [ - 100 :]human / userEssas funções criam uma mensagem do usuário para o modelo de bate -papo.
from chatlab import human
human ( "How are you?" ){ "role" : " user " , "content" : " How are you? " }narrate / system As mensagens system , também chamadas narrate no chatlab , permitem que você dirija o modelo em uma direção. Você pode usá -los para fornecer contexto sem ser visto pelo usuário. Um uso comum é incluí -lo como contexto inicial para a conversa.
from chatlab import narrate
narrate ( "You are a large bird" ){ "role" : " system " , "content" : " You are a large bird " }Este projeto usa poesia para gerenciamento de dependência. Para começar, clonar o repositório e correr
poetry install -E dev -E test Usamos ruff e mypy .
Solicitações de tração são bem -vindas. Para grandes mudanças, abra um problema primeiro para discutir o que você gostaria de mudar.