Eksperimen obrolan, disederhanakan
?
ChatLab adalah paket Python yang memudahkan untuk bereksperimen dengan model obrolan Openai. Ini menyediakan antarmuka sederhana untuk mengobrol dengan model dan cara untuk mendaftarkan fungsi yang dapat dipanggil dari model obrolan.
Terbaik, ini interaktif di 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" )Input:
{}Keluaran:
" tails " It landed on tails!Di notebook, teks akan mengalir ke input output dan fungsi fungsi dan output adalah tampilan yang dapat dilipat yang bagus, seperti dengan plugin chatgpt.
TODO: Sertakan GIF/MP4 dari ini beraksi
pip install chatlab Anda harus mengatur variabel lingkungan OPENAI_API_KEY Anda. Anda dapat menemukan kunci API Anda di halaman akun OpenAI Anda. Saya merekomendasikan untuk mengaturnya di file .env saat bekerja secara lokal.
Pada lingkungan notebook yang di -host, atur dalam rahasia Anda agar tetap aman dari mata LLM.
Chat ? Di mana Chat mengambil level berikutnya adalah dengan fungsi obrolan . Anda bisa
Chat AndaAnda mungkin ingat perilaku semacam ini dari plugin chatgpt. Sekarang, Anda dapat mengambil ini lebih jauh dengan kode khusus Anda sendiri.
Sebagai contoh, mari kita berikan model bahasa besar kemampuan untuk memberi tahu waktu.
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 ] = NoneMari kita hancurkan ini.
what_time adalah fungsi yang akan kami berikan akses. DocString -nya membentuk description untuk model sementara skema berasal dari BaseModel Pydantic yang disebut WhatTime .
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime ) Setelah itu, kita dapat memanggil chat dengan string langsung (yang diubah menjadi pesan pengguna) atau menggunakan pembuat pesan sederhana dari chatlab bernama user dan system .
await chat ( "What time is it?" )Input:
{}Keluaran:
" 11:19 AM " The current time is 11:19 AM. Ekspor paket chatlab
Chat Kelas Chat adalah cara utama untuk mengobrol menggunakan model OpenAI. Itu membuat riwayat obrolan Anda di Chat.messages .
Chat.submit submit adalah bagaimana Anda mengirim semua pesan yang saat ini dibangun ke OpenAI. Output markdown akan menampilkan respons dari 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 Anda dapat mendaftarkan fungsi dengan Chat.register untuk membuatnya tersedia untuk model obrolan. DOCString fungsi menjadi deskripsi fungsi saat skema berasal dari pydantic.BaseModel lewat.
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.messagesPesan mentah yang dikirim dan diterima ke Openai. Jika Anda mencapai batas token, Anda dapat menghapus pesan lama dari daftar untuk memberi ruang untuk lebih.
chat . messages = chat . messages [ - 100 :]human / userFungsi -fungsi ini membuat pesan dari pengguna ke model obrolan.
from chatlab import human
human ( "How are you?" ){ "role" : " user " , "content" : " How are you? " }narrate / system Pesan system , juga disebut narrate in chatlab , memungkinkan Anda untuk mengarahkan model ke arah. Anda dapat menggunakan ini untuk memberikan konteks tanpa dilihat oleh pengguna. Salah satu penggunaan umum adalah memasukkannya sebagai konteks awal untuk percakapan.
from chatlab import narrate
narrate ( "You are a large bird" ){ "role" : " system " , "content" : " You are a large bird " }Proyek ini menggunakan puisi untuk manajemen ketergantungan. Untuk memulai, klon repo dan lari
poetry install -E dev -E test Kami menggunakan ruff dan mypy .
Permintaan tarik dipersilakan. Untuk perubahan besar, buka masalah terlebih dahulu untuk membahas apa yang ingin Anda ubah.