غلاف ChatGPT في جهاز TTY الخاص بك
ملحوظة
هذا الإصدار يدعم gpt4 وgpt4-turbo!
gptty عبارة عن واجهة ChatGPT التي تتيح لك (1) التفاعل مع ChatGPT بطريقة مشابهة لتطبيق الويب، ولكن دون الحاجة إلى الاعتماد على استقرار تطبيق الويب؛ (2) الحفاظ على السياق عبر جلسات الدردشة وتنظيم محادثاتك كيفما تريد؛ (3) احفظ نسخًا محلية من محادثاتك لسهولة الرجوع إليها.
ربما تكون مسؤول النظام الذي يقوم بتكوين خادم ويب لصاحب العمل الخاص بك. أنت تدخل إلى النظام من خلال واجهة فعلية، مع اتصال بالإنترنت ولكن لا توجد بيئة سطح مكتب أو واجهة مستخدم رسومية. أثناء تكوين خادم الويب، تتلقى خطأ غير قابل للتفسير حيث تقوم بإعادة التوجيه إلى ملف، ولكن لا تريد أن تضطر إلى القفز عبر المراحل لنسخه إلى نظام آخر باستخدام متصفح حتى تتمكن من البحث عن الخطأ. بدلاً من ذلك، يمكنك تثبيت gptty وإعادة توجيه الخطأ إلى عميل الدردشة باستخدام أوامر مثل gptty query --tag error --question "$(cat app.error | tr 'n' ' ')"
(مما سيؤدي إلى التخلص من فواصل الأسطر لك) أو cat app.error | xargs -d 'n' -I {} gptty query --tag error --question "{}"
(والذي يفترض أن الخطأ يمتد إلى سطر واحد فقط).
وبدلاً من ذلك، أنت مطور برامج أو عالم بيانات ترغب في نقل البيانات عبر ChatGPT، ولكنك ترغب في استخدام واجهة برمجة تطبيقات مجردة للغاية لإجراء هذه الطلبات بدلاً من التعرف بشكل وثيق على واجهة برمجة تطبيقات OpenAI ومغلفاتها المختلفة الخاصة باللغة. عندما تريد تحديث قاعدة التعليمات البرمجية الخاصة بك لاستخدام نموذج مختلف، فأنت تريد أن تكون قادرًا على تعديل ملف تكوين واحد فقط وتتوقع أن يظل تنسيق استجابة الاستعلام متسقًا عبر النماذج المختلفة.
أو ربما كنت من المتحمسين الذين يريدون الاحتفاظ بنسخ محلية من محادثاتهم، أو يريدون ممارسة المزيد من التحكم المباشر في أساليب التصنيف التي تستخدمها لهذه المحادثات.
توفر OpenAI عددًا من النماذج من خلال واجهة برمجة التطبيقات (API) الخاصة بها. [1] حاليًا، يدعم gptty Completions
(davinci، curie) وإكمالات ChatCompletions
(gpt-3.5-turbo، gpt-4). كل ما عليك فعله هو تحديد اسم النموذج في التكوين الخاص بك (الافتراضي هو text-davinci-003)، وسيتولى التطبيق الباقي.
يمكنك تثبيت gptty
على النقطة:
pip install gptty
يمكنك أيضًا التثبيت من 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 .
يمكنك الآن التحقق من أنه يعمل عن طريق تشغيل gptty --help
. إذا واجهت خطأ، فحاول تكوين التطبيق.
يقرأ gptty
إعدادات التكوين من ملف يسمى gptty.ini
، والذي يتوقع التطبيق أن يكون موجودًا في نفس الدليل الذي تقوم بتشغيل gptty
منه ما لم تقم بتمرير ملف config_file
مخصص. يستخدم الملف تنسيق ملف INI، الذي يتكون من أقسام، لكل منها أزواج قيمة المفتاح الخاصة بها.
مفتاح | يكتب | القيمة الافتراضية | وصف |
---|---|---|---|
api_key | خيط | "" | مفتاح API الخاص بك لخدمة GPT الخاصة بـ OpenAI |
org_id | خيط | "" | معرف مؤسستك لخدمة GPT الخاصة بـ OpenAI |
your_name | خيط | "سؤال" | اسم موجه الإدخال |
gpt_name | خيط | "إجابة" | اسم الاستجابة التي تم إنشاؤها |
input_file | خيط | "إخراج.txt" | اسم الملف الذي سيتم حفظ الإخراج فيه |
نموذج | خيط | "النص دافينشي-003" | اسم نموذج GPT المطلوب استخدامه |
درجة حرارة | يطفو | 0.0 | درجة الحرارة المستخدمة لأخذ العينات |
max_tokens | عدد صحيح | 250 | الحد الأقصى لعدد الرموز المميزة التي سيتم إنشاؤها للاستجابة |
max_context_length | عدد صحيح | 150 | الحد الأقصى لطول سياق الإدخال |
context_keywords_only | بول | حقيقي | قم بترميز الكلمات الرئيسية لتقليل استخدام واجهة برمجة التطبيقات (API). |
keep_new_lines | بول | خطأ شنيع | احتفظ بالتنسيق الأصلي للاستجابة |
Verified_internet_endpoint | خيط | "google.com" | عنوان للتحقق من صحة الاتصال بالإنترنت |
يمكنك تعديل الإعدادات في ملف التكوين لتناسب احتياجاتك. في حالة عدم وجود مفتاح في ملف التكوين، سيتم استخدام القيمة الافتراضية. يستخدم القسم [الرئيسي] لتحديد إعدادات البرنامج.
[main]
api_key =my_api_key
يوفر هذا المستودع نموذجًا لملف التكوين assets/gptty.ini.example
الذي يمكنك استخدامه كنقطة بداية.
توفر ميزة الدردشة واجهة دردشة تفاعلية للتواصل مع ChatGPT. يمكنك طرح الأسئلة وتلقي الإجابات في الوقت الحقيقي.
لبدء واجهة الدردشة، قم بتشغيل gptty chat
. يمكنك أيضًا تحديد مسار ملف التكوين المخصص عن طريق تشغيل:
gptty chat --config_path /path/to/your/gptty.ini
داخل واجهة الدردشة، يمكنك كتابة أسئلتك أو أوامرك مباشرة. لعرض قائمة الأوامر المتاحة، اكتب :help
، والذي سيظهر الخيارات التالية.
ميتاكوماند | وصف |
---|---|
:يساعد | عرض قائمة بالأوامر المتاحة وأوصافها. |
:يترك | الخروج من ChatGPT. |
:سجلات | عرض إعدادات التكوين الحالية. |
:السياق[أ:ب] | قم بعرض سجل السياق، مع تحديد النطاق a وb بشكل اختياري. قيد التطوير |
لاستخدام أمر ما، ما عليك سوى كتابته في موجه الأوامر والضغط على Enter. على سبيل المثال، استخدم الأمر التالي لعرض إعدادات التكوين الحالية في الجهاز:
> :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
يمكنك كتابة سؤال في الموجه في أي وقت، وسيقوم بإنشاء إجابة لك. إذا كنت ترغب في مشاركة السياق عبر الاستعلامات، فراجع قسم السياق أدناه.
تتيح لك ميزة الاستعلام إرسال سؤال واحد أو عدة أسئلة إلى ChatGPT وتلقي الإجابات مباشرة في سطر الأوامر.
لاستخدام ميزة الاستعلام، قم بتشغيل شيء مثل:
gptty query --question "What is the capital of France?" --question "What is the largest mammal?"
يمكنك أيضًا توفير علامة اختيارية لتصنيف استعلامك:
gptty query --question "What is the capital of France?" --tag "geography"
يمكنك تحديد مسار ملف التكوين المخصص إذا لزم الأمر:
gptty query --config_path /path/to/your/gptty.ini --question "What is the capital of France?"
تذكر أن gptty يستخدم ملف تكوين (افتراضيًا gptty.ini) لتخزين الإعدادات مثل مفاتيح API وتكوينات النماذج ومسارات ملفات الإخراج. تأكد من أن لديك ملف تكوين صالحًا قبل تشغيل أوامر gptty.
من خلال إضافة علامة --verbose
في نهاية أوامر الدردشة والاستعلام، سيوفر التطبيق بيانات تصحيح إضافية، بما في ذلك عدد الرموز المميزة لكل طلب. يمكن أن يكون هذا مفيدًا عندما تحتاج إلى تتبع معدلات استخدام واجهة برمجة التطبيقات.
من خلال إضافة خيار --additional_context [some_string_here]
إلى أوامر الاستعلام الخاصة بك، سيضيف التطبيق أي سلسلة تمررها كسياق خارجي إضافي لسؤالك.
من خلال إضافة علامة --json
في نهاية أوامر الاستعلام الخاصة بك، سيتخطى التطبيق كتابة نص يمكن قراءته بواسطة الإنسان إلى stdout، وبدلاً من ذلك يكتب الأسئلة والإجابات ككائنات json مثل [{"question":QUESTION_1, "response":RESPONSE_1},{"question":QUESTION_1, "response":RESPONSE_1},...]
.
من خلال إضافة العلامة --quiet
في نهاية أوامر الاستعلام الخاصة بك، سيتخطى التطبيق كتابة أي شيء إلى stdout، لكنه سيستمر في كتابة الردود على output_file
المحدد في ملف تكوين التطبيق.
يمكن أن يساعد وضع علامات على النص للسياق عند استخدام الأوامر الفرعية chat
query
في هذا التطبيق في تحسين دقة الاستجابات التي تم إنشاؤها. إليك كيفية تعامل التطبيق مع السياق باستخدام الأمر الفرعي chat
:
bananas
أو shakespeare
.[tag]
إليها قبلها. على سبيل المثال، إذا كان سياق سؤالك هو "الطهي"، فيمكنك وضع علامة عليه كـ [cooking]
. تأكد من استخدام نفس العلامة باستمرار لجميع الاستعلامات ذات الصلة. فيما يلي مثال لما قد يبدو عليه هذا، باستخدام الأسئلة الموسومة بـ [shakespeare]
. لاحظ كيف أنه في السؤال الثاني لم يذكر اسم "وليام شكسبير" على الإطلاق.
عندما تستخدم الأمر الفرعي query
، اتبع نفس الخطوات الموضحة أعلاه، ولكن بدلاً من إضافة نص أسئلتك مسبقًا بالعلامة المطلوبة، استخدم خيار --tag
لتضمين العلامة عند إرسال الاستعلام الخاص بك. على سبيل المثال، إذا كان سياق سؤالك هو "الطهي"، فيمكنك استخدام:
gptty --question "some question" --tag cooking
سيقوم التطبيق بحفظ السؤال والإجابة التي تم وضع علامة عليها في ملف الإخراج المحدد في ملف التكوين.
يمكنك أتمتة عملية إرسال أسئلة متعددة إلى أمر gptty query
باستخدام برنامج bash النصي. يمكن أن يكون هذا مفيدًا بشكل خاص إذا كان لديك قائمة بالأسئلة المخزنة في ملف، وتريد معالجتها جميعًا مرة واحدة. على سبيل المثال، لنفترض أن لديك ملف questions.txt
مع كل سؤال في سطر جديد، كما هو موضح أدناه.
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?
يمكنك إرسال كل سؤال من ملف questions.txt
إلى أمر gptty query
باستخدام سطر bash التالي:
xargs -d ' n ' -I {} gptty query --question " {} " < questions.txt
توفر فئة UniversalCompletion واجهة موحدة للتفاعل مع نماذج لغة OpenAI، (في الغالب) تلخص تفاصيل ما إذا كان التطبيق يستخدم وضع الإكمال أو ChatCompletion. الفكرة الرئيسية هي تسهيل إنشاء نماذج اللغة وتكوينها وإدارتها. وهنا بعض الأمثلة على الاستخدام.
# 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.