Chat -Experimente, vereinfacht
?
ChatLab ist ein Python -Paket, mit dem es einfach mit den Chat -Modellen von OpenAI experimentieren kann. Es bietet eine einfache Schnittstelle zum Chatten mit den Modellen und eine Möglichkeit, Funktionen zu registrieren, die aus dem Chat -Modell aufgerufen werden können.
Am besten ist es interaktiv im Notebook!
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" )Eingang:
{}Ausgabe:
" tails " It landed on tails!Im Notizbuch wird in Text in eine Markdown -Ausgabe- und Funktionseingänge und Ausgänge ein schönes zusammenklappbares Display wie bei ChatGPT -Plugins sind.
TODO: GIF/MP4 davon in Aktion einschließen
pip install chatlab Sie müssen Ihre Umgebungsvariable OPENAI_API_KEY festlegen. Sie finden Ihren API -Schlüssel auf Ihrer OpenAI -Kontoseite. Ich empfehle, es in einer .env -Datei einzustellen, wenn Sie lokal arbeiten.
Stellen Sie es in gehosteten Notebook -Umgebungen in Ihre Geheimnisse ein, um es vor neugierigen LLM -Augen zu schützen.
Chat ermöglichen? Wo Chat s Nehmen Sie es als nächstes Level mit Chat -Funktionen . Du kannst
ChatMöglicherweise erinnern Sie sich an diese Art von Verhalten von Chatgpt -Plugins. Jetzt können Sie dies noch weiter mit Ihrem eigenen benutzerdefinierten Code nehmen.
Lassen Sie uns den großen Sprachmodellen als Beispiel die Möglichkeit geben, Zeit zu erzählen.
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 ] = NoneLassen Sie uns das niederlassen.
what_time ist die Funktion, auf die wir Zugriff bieten. Die Dokumentation bildet die description für das Modell, während das Schema aus dem pydantischen BaseModel namens WhatTime stammt.
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime ) Danach können wir chat mit direkten Zeichenfolgen (die in Benutzernachrichten umgewandelt werden) oder einfache Nachrichtenhersteller von chatlab genannt user und system anrufen.
await chat ( "What time is it?" )Eingang:
{}Ausgabe:
" 11:19 AM " The current time is 11:19 AM. Das chatlab -Paket -Exporte
Chat Die Chat -Klasse ist die Hauptmethode, um mithilfe von OpenAIs Modellen zu chatten. Es führt einen Historie Ihres Chats in Chat.messages .
Chat.submit submit ist, wie Sie alle aktuell erstellten Nachrichten an OpenAI senden. Die Ausgabe von Markdown zeigt die Antworten des assistant an.
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 Sie können Funktionen bei Chat.register registrieren, um sie dem Chat -Modell zur Verfügung zu stellen. Die Dokumentation der Funktion wird zur Beschreibung der Funktion, während das Schema vom pydantic.BaseModel übergeben wird.
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.messagesDie rohen Nachrichten, die an Openai gesendet und empfangen wurden. Wenn Sie ein Token -Limit treffen, können Sie alte Nachrichten aus der Liste entfernen, um Platz für mehr zu schaffen.
chat . messages = chat . messages [ - 100 :]human / userDiese Funktionen erstellen eine Nachricht vom Benutzer zum Chat -Modell.
from chatlab import human
human ( "How are you?" ){ "role" : " user " , "content" : " How are you? " }narrate / system Mit system , die auch in chatlab narrate werden, können Sie das Modell in eine Richtung lenken. Sie können diese verwenden, um einen Kontext bereitzustellen, ohne vom Benutzer gesehen zu werden. Eine übliche Verwendung besteht darin, es als ursprünglichen Kontext für die Konversation einzubeziehen.
from chatlab import narrate
narrate ( "You are a large bird" ){ "role" : " system " , "content" : " You are a large bird " }Dieses Projekt verwendet Poesie für das Abhängigkeitsmanagement. Um loszulegen, klonen Sie das Repo und rennen Sie
poetry install -E dev -E test Wir verwenden ruff und mypy .
Pull -Anfragen sind willkommen. Für wichtige Änderungen öffnen Sie bitte zuerst ein Problem, um zu besprechen, was Sie ändern möchten.