Pembungkus ChatGPT di TTY Anda
Catatan
Versi ini mendukung gpt4 dan gpt4-turbo!
gptty adalah antarmuka shell ChatGPT yang memungkinkan Anda (1) berinteraksi dengan ChatGPT dengan cara yang mirip dengan aplikasi web, namun tanpa perlu bergantung pada stabilitas aplikasi web; (2) pertahankan konteks di seluruh sesi obrolan dan susun percakapan sesuai keinginan Anda; (3) simpan salinan lokal percakapan Anda untuk memudahkan referensi.
Mungkin Anda adalah administrator sistem yang mengonfigurasi server web untuk perusahaan Anda. Anda mengakses sistem dari antarmuka fisik, dengan koneksi internet tetapi tanpa lingkungan desktop atau antarmuka pengguna grafis. Saat mengonfigurasi server web, Anda menerima kesalahan yang tidak dapat dijelaskan yang mengarahkan Anda ke suatu file, tetapi tidak ingin harus melewati rintangan untuk menyalinnya ke sistem lain dengan browser sehingga Anda dapat mencari kesalahan tersebut. Sebagai gantinya, Anda menginstal gptty dan mengarahkan kesalahan ke klien obrolan dengan perintah seperti gptty query --tag error --question "$(cat app.error | tr 'n' ' ')"
(yang akan menghilangkan jeda baris untuk Anda) atau cat app.error | xargs -d 'n' -I {} gptty query --tag error --question "{}"
(yang mengasumsikan bahwa kesalahan Anda hanya mencakup satu baris).
Alternatifnya, Anda adalah pengembang perangkat lunak atau ilmuwan data yang ingin menyalurkan data melalui ChatGPT, namun ingin menggunakan API yang sangat abstrak untuk membuat permintaan ini alih-alih membiasakan diri secara mendalam dengan OpenAI API dan berbagai wrapper khusus bahasanya. Saat Anda ingin memperbarui basis kode untuk menggunakan model yang berbeda, Anda hanya perlu memodifikasi satu file konfigurasi dan mengharapkan format respons kueri tetap konsisten di berbagai model.
Atau mungkin Anda seorang antusias yang ingin menyimpan salinan lokal dari percakapan mereka, atau ingin melakukan kontrol lebih langsung terhadap metode kategorisasi yang Anda gunakan untuk percakapan tersebut.
OpenAI menyediakan sejumlah model melalui API mereka. [1] Saat ini, gptty mendukung Completions
(davinci, curie) dan ChatCompletions
(gpt-3.5-turbo, gpt-4). Yang perlu Anda lakukan hanyalah menentukan nama model di konfigurasi Anda (defaultnya adalah text-davinci-003), dan aplikasi akan menangani sisanya.
Anda dapat menginstal gptty
di pip:
pip install gptty
Anda juga dapat menginstal dari git:
cd ~/Code # replace this with whatever directory you want to use
git clone https://github.com/signebedi/gptty.git
cd gptty/
# now install the requirements
python3 -m venv venv
source venv/bin/activate
pip install -e .
Sekarang, Anda dapat memverifikasi fungsinya dengan menjalankan gptty --help
. Jika Anda mengalami kesalahan, coba konfigurasikan aplikasi.
gptty
membaca pengaturan konfigurasi dari file bernama gptty.ini
, yang diharapkan oleh aplikasi berada di direktori yang sama dengan tempat Anda menjalankan gptty
kecuali Anda meneruskan config_file
khusus. File tersebut menggunakan format file INI, yang terdiri dari beberapa bagian, masing-masing dengan pasangan nilai kuncinya sendiri.
Kunci | Jenis | Nilai Bawaan | Keterangan |
---|---|---|---|
api_key | Rangkaian | "" | Kunci API Anda untuk layanan GPT OpenAI |
org_id | Rangkaian | "" | ID organisasi Anda untuk layanan GPT OpenAI |
nama_mu | Rangkaian | "pertanyaan" | Nama perintah masukan |
gpt_nama | Rangkaian | "tanggapan" | Nama respons yang dihasilkan |
keluaran_file | Rangkaian | "keluaran.txt" | Nama file tempat output akan disimpan |
model | Rangkaian | "teks-davinci-003" | Nama model GPT yang akan digunakan |
suhu | Mengambang | 0,0 | Suhu yang digunakan untuk pengambilan sampel |
max_tokens | Bilangan bulat | 250 | Jumlah maksimum token yang dihasilkan untuk respons |
max_context_length | Bilangan bulat | 150 | Panjang maksimum konteks masukan |
konteks_kata kunci_saja | Bodoh | BENAR | Tokenisasikan kata kunci untuk mengurangi penggunaan API |
pertahankan_garis_baru | Bodoh | PALSU | Pertahankan format respons asli |
verifikasi_internet_endpoint | Rangkaian | "google.com" | Alamat untuk memvalidasi koneksi internet |
Anda dapat mengubah pengaturan di file konfigurasi sesuai kebutuhan Anda. Jika kunci tidak ada dalam file konfigurasi, nilai default akan digunakan. Bagian [utama] digunakan untuk menentukan pengaturan program.
[main]
api_key =my_api_key
Repositori ini menyediakan contoh file konfigurasi assets/gptty.ini.example
yang dapat Anda gunakan sebagai titik awal.
Fitur obrolan menyediakan antarmuka obrolan interaktif untuk berkomunikasi dengan ChatGPT. Anda dapat mengajukan pertanyaan dan menerima tanggapan secara real-time.
Untuk memulai antarmuka obrolan, jalankan gptty chat
. Anda juga dapat menentukan jalur file konfigurasi khusus dengan menjalankan:
gptty chat --config_path /path/to/your/gptty.ini
Di dalam antarmuka obrolan, Anda dapat mengetik pertanyaan atau perintah secara langsung. Untuk melihat daftar perintah yang tersedia, ketik :help
, yang akan menampilkan opsi berikut.
perintah meta | Keterangan |
---|---|
:membantu | Menampilkan daftar perintah yang tersedia dan deskripsinya. |
:berhenti | Keluar dari ObrolanGPT. |
:log | Menampilkan pengaturan konfigurasi saat ini. |
:konteks[a:b] | Menampilkan riwayat konteks, secara opsional menentukan rentang a dan b. Sedang dikembangkan |
Untuk menggunakan perintah, cukup ketikkan ke dalam command prompt dan tekan Enter. Misalnya, gunakan perintah berikut untuk menampilkan pengaturan konfigurasi saat ini di terminal:
> :configs
api_key: SOME_KEY_HERE
org_id: org-SOME_CHARS_HERE
your_name: question
gpt_name: response
output_file: output.txt
model: text-davinci-003
temperature: 0.0
max_tokens: 250
max_context_length: 5000
Anda dapat mengetikkan pertanyaan ke dalam prompt kapan saja, dan itu akan menghasilkan respons untuk Anda. Jika Anda ingin berbagi konteks di seluruh kueri, lihat bagian konteks di bawah.
Fitur kueri memungkinkan Anda mengirimkan satu atau beberapa pertanyaan ke ChatGPT dan menerima jawabannya langsung di baris perintah.
Untuk menggunakan fitur kueri, jalankan sesuatu seperti:
gptty query --question "What is the capital of France?" --question "What is the largest mammal?"
Anda juga dapat memberikan tag opsional untuk mengkategorikan kueri Anda:
gptty query --question "What is the capital of France?" --tag "geography"
Anda dapat menentukan jalur file konfigurasi khusus jika diperlukan:
gptty query --config_path /path/to/your/gptty.ini --question "What is the capital of France?"
Ingatlah bahwa gptty menggunakan file konfigurasi (secara default gptty.ini) untuk menyimpan pengaturan seperti kunci API, konfigurasi model, dan jalur file keluaran. Pastikan Anda memiliki file konfigurasi yang valid sebelum menjalankan perintah gptty.
Dengan menambahkan tag --verbose
di akhir perintah obrolan dan kueri, aplikasi akan menyediakan data debug tambahan, termasuk jumlah token untuk setiap permintaan. Ini bisa berguna ketika Anda perlu melacak tingkat penggunaan API.
Dengan menambahkan opsi --additional_context [some_string_here]
ke perintah kueri Anda, aplikasi akan menambahkan string apa pun yang Anda teruskan, di luar konteks pertanyaan Anda.
Dengan menambahkan tag --json
di akhir perintah kueri Anda, aplikasi akan melewatkan penulisan teks yang dapat dibaca manusia ke stdout, dan sebagai gantinya menulis pertanyaan dan tanggapan sebagai objek json seperti [{"question":QUESTION_1, "response":RESPONSE_1},{"question":QUESTION_1, "response":RESPONSE_1},...]
.
Dengan menambahkan tag --quiet
di akhir perintah kueri Anda, aplikasi akan melewatkan penulisan apa pun ke stdout, namun masih akan menulis respons ke output_file
yang ditentukan dalam file konfigurasi aplikasi.
Memberi tag pada teks untuk konteks saat menggunakan subperintah chat
dan query
di aplikasi ini dapat membantu meningkatkan keakuratan respons yang dihasilkan. Berikut cara aplikasi menangani konteks dengan subperintah chat
:
bananas
atau shakespeare
.[tag]
. Misalnya, jika konteks pertanyaan Anda adalah "memasak", Anda dapat menandainya sebagai [cooking]
. Pastikan untuk menggunakan tag yang sama secara konsisten untuk semua kueri terkait. Berikut adalah contoh tampilannya, menggunakan pertanyaan yang diberi tag sebagai [shakespeare]
. Perhatikan bagaimana, pada pertanyaan kedua, nama 'William Shakespeare' tidak disebutkan sama sekali.
Saat Anda menggunakan subperintah query
, ikuti langkah yang sama seperti dijelaskan di atas, namun alih-alih mengawali teks pertanyaan Anda dengan tag yang Anda inginkan, gunakan opsi --tag
untuk menyertakan tag saat mengirimkan kueri Anda. Misalnya, jika konteks pertanyaan Anda adalah "memasak", Anda dapat menggunakan:
gptty --question "some question" --tag cooking
Aplikasi akan menyimpan pertanyaan dan respons yang Anda tandai dalam file keluaran yang ditentukan dalam file konfigurasi.
Anda dapat mengotomatiskan proses pengiriman beberapa pertanyaan ke perintah gptty query
menggunakan skrip bash. Ini bisa sangat berguna jika Anda memiliki daftar pertanyaan yang disimpan dalam sebuah file, dan Anda ingin memproses semuanya sekaligus. Misalnya, Anda memiliki file questions.txt
dengan setiap pertanyaan di baris baru, seperti di bawah ini.
What are the key differences between machine learning, deep learning, and artificial intelligence?
How do I choose the best programming language for a specific project or task?
Can you recommend some best practices for code optimization and performance improvement?
What are the essential principles of good software design and architecture?
How do I get started with natural language processing and text analysis in Python?
What are some popular Python libraries or frameworks for building web applications?
Can you suggest some resources to learn about data visualization and its implementation in Python?
What are some important concepts in cybersecurity, and how can I apply them to my projects?
How do I ensure that my machine learning models are fair, ethical, and unbiased?
Can you recommend strategies for staying up-to-date with the latest trends and advancements in technology and programming?
Anda dapat mengirim setiap pertanyaan dari file questions.txt
ke perintah gptty query
menggunakan bash one-liner berikut:
xargs -d ' n ' -I {} gptty query --question " {} " < questions.txt
Kelas UniversalCompletion menyediakan antarmuka terpadu untuk berinteraksi dengan model bahasa OpenAI, (kebanyakan) mengabstraksi secara spesifik apakah aplikasi menggunakan mode Completion atau ChatCompletion. Ide utamanya adalah untuk memfasilitasi pembuatan, konfigurasi, dan pengelolaan model bahasa. Berikut ini beberapa contoh penggunaan.
# First, import the UniversalCompletion class from the gptty library.
from gptty import UniversalCompletion
# Now, we instantiate a new UniversalCompletion object.
# The 'api_key' parameter is your OpenAI API key, which you get when you sign up for the API.
# The 'org_id' parameter is your OpenAI organization ID, which is also provided when you sign up.
g = UniversalCompletion ( api_key = "sk-SOME_CHARS_HERE" , org_id = "org-SOME_CHARS_HERE" )
# This connects to the OpenAI API using the provided API key and organization ID.
g . connect ()
# Now we specify which language model we want to use.
# Here, 'gpt-3.5-turbo' is specified, which is a version of the GPT-3 model.
g . set_model ( 'gpt-3.5-turbo' )
# This method is used to verify the model type.
# It returns a string that represents the endpoint for the current model in use.
g . validate_model_type ( g . model ) # Returns: 'v1/chat/completions'
# We send a request to the language model here.
# The prompt is a question, given in a format that the model understands.
# The model responds with a completion - an extension of the prompt based on what it has learned during training.
# The returned object is a representation of the response from the model.
g . fetch_response ( prompt = [{ "role" : "user" , "content" : "What is an abstraction?" }])
# Returns a JSON response with the assistant's message.