تفاعل مع نماذج GPT AI كمستخدم قوي.
يدعم العديد من موفري الذكاء الاصطناعي
الدعم الهندسي السريع الغني
واجهة مستخدم مرنة
ابحث في Stack Overflow من داخل المحرر
قم باستدعاء أوامر CLI المخصصة المعدة مسبقًا من داخل المحرر الخاص بك
قم بالتنزيل من: VSCode Marketplace واتبع التعليمات.
أو
خطوات:
Ctrl
- Shift
- P
(Windows وLinux) أو Cmd
- Shift
- P
(macOS)، قم بتشغيل > Extensions: Install Extension
.FlexiGPT
بواسطة ppipada
.Ctrl
/ Cmd
,
) وابحث عن flexigpt
.خيارات:
// flexigpt basic configuration
"flexigpt.promptFiles" : " /home/me/my_prompt_files/myprompts.js " ,
"flexigpt.inBuiltPrompts" : " gobasic.js;gosql.js " ,
"flexigpt.defaultProvider" : " openai " ,
// openai provider configuration
"flexigpt.openai.apiKey" : " sk-mkey " ,
"flexigpt.openai.timeout" : " 120 " ,
"flexigpt.openai.defaultCompletionModel" : " gpt-3.5-turbo " ,
"flexigpt.openai.defaultChatCompletionModel" : " gpt-3.5-turbo " ,
"flexigpt.openai.defaultOrigin" : " https://api.openai.com " ,
// anthropic provider configuration
"flexigpt.anthropic.apiKey" : " sk-mkey " ,
"flexigpt.anthropic.timeout" : " 120 " ,
"flexigpt.anthropic.defaultCompletionModel" : " claude-3-haiku-20240307 " ,
"flexigpt.anthropic.defaultChatCompletionModel" : " claude-3-haiku-20240307 " ,
"flexigpt.anthropic.defaultOrigin" : " https://api.anthropic.com " ,
// huggingface provider configuration
"flexigpt.huggingface.apiKey" : " hf-mkey " ,
"flexigpt.huggingface.timeout" : " 120 " ,
"flexigpt.huggingface.defaultCompletionModel" : " bigcode/starcoder2-15b " ,
"flexigpt.huggingface.defaultChatCompletionModel" : " deepseek-ai/deepseek-coder-1.3b-instruct " ,
"flexigpt.huggingface.defaultOrigin" : " https://api-inference.huggingface.co " ,
// googlegl provider configuration
"flexigpt.googlegl.apiKey" : " gl-mkey " ,
"flexigpt.googlegl.timeout" : " 120 " ,
"flexigpt.googlegl.defaultCompletionModel" : " gemini-1.0-pro " ,
"flexigpt.googlegl.defaultChatCompletionModel" : " gemini-1.0-pro " ,
"flexigpt.googlegl.defaultOrigin" : " https://generativelanguage.googleapis.com " ,
// llamacpp provider configuration
"flexigpt.llamacpp.apiKey" : " " ,
"flexigpt.llamacpp.timeout" : " 120 " ,
"flexigpt.llamacpp.defaultOrigin" : " 127.0.0.1:8080 " ,
يتطلب موفر OpenAI مفتاح API ليعمل. يمكنك الحصول على واحد من إعدادات حساب openAI الخاص بك هنا.
واجهات برمجة التطبيقات المدعومة
النماذج المدعومة - جميع النماذج مدعومة بواجهتي برمجة التطبيقات أعلاه
gpt-4
gpt-4-*
gpt-3.5-turbo
gpt-3.5-turbo-*
يستخدم FlexiGPT defaultChatCompletionModel: gpt-3.5-turbo
، ما لم يتجاوزه الموجه.
للحصول على مثال حول كيفية استخدام ميزة Function calling
في OpenAI، انظر إلى ملف المطالبة هذا هنا.
خيارات التكوين:
gpt-3.5-turbo
. لاحظ أن استخدام gpt-3.5-turbo
يتم احتسابه في فواتير OpenAI. النموذج المجاني الوحيد الموجود في مرحلة تجريبية اعتبارًا من فبراير 2023 هو المخطوطة ( code-davinci-002
).https://api.openai.com
. يتطلب الموفر الأنثروبي مفتاح API ليعمل. يمكنك الحصول عليها من موقع Anthropic هنا.
واجهة برمجة التطبيقات المدعومة
claude-3-*
, claude-2*
يستخدم FlexiGPT defaultChatCompletionModel: claude-3-haiku-20240307
، ما لم يتجاوزه الموجه.
خيارات التكوين:
claude-3-haiku-20240307
.https://api.anthropic.com
. يتطلب موفر Huggingface وجود مفتاح API ليعمل. يمكنك الحصول على واحدة من موقع Huggingface هنا.
واجهة برمجة التطبيقات المدعومة
النماذج المدعومة - جميع النماذج مدعومة بواجهة برمجة التطبيقات المذكورة أعلاه
يستخدم FlexiGPT defaultChatCompletionModel: deepseek-ai/deepseek-coder-1.3b-instruct
، ما لم يتجاوزه الموجه.
خيارات التكوين:
deepseek-ai/deepseek-coder-1.3b-instruct
.bigcode/starcoder2-15b
.https://api-inference.huggingface.co
. يتطلب موفر Googlegl مفتاح API ليعمل. يمكنك الحصول على واحد من الموقع هنا.
واجهة برمجة التطبيقات المدعومة: https://ai.google.dev/api/rest/v1/models/generateContent
gemini-1.0-pro
chat-bison-001
(تراث)text-bison-001
(تراث) يستخدم FlexiGPT defaultChatCompletionModel: gemini-1.0-pro
، ما لم يتجاوزه الموجه.
خيارات التكوين:
gemini-1.0-pro
.gemini-1.0-pro
.https://generativelanguage.googleapis.com
. قم بإعداد خادم llama.cpp كما هو مذكور هنا
واجهات برمجة التطبيقات المدعومة
your host:port of the llama server
/ الإكمالالنماذج المدعومة - جميع النماذج المدعومة بواجهات برمجة التطبيقات المذكورة أعلاه. لاحظ أن النموذج الموجود في llama.cpp يجب تقديمه عند تشغيل الخادم نفسه ولا يمكن تقديمه عند كل مستوى طلب.
خيارات التكوين:
http://127.0.0.1:8080
.احصل على الكود باستخدام تعليق في المحرر.
Ctrl
+ Alt
+ G
FlexiGPT: Get Code
للنقر/الإدخالخطوات الحصول على جميع الوظائف أدناه (مماثلة لجميع المطالبات التي تم تكوينها؛ مدمجة أو مخصصة):
Ctrl
+ Alt
+ A
تصحيح وإعادة صياغة الكود المحدد.
إنشاء اختبار وحدة للكود المحدد.
أكمل الاختيار.
اشرح الاختيار.
قم بإنشاء وثائق للكود المحدد.
ابحث عن مشاكل التحديد وأصلحها واشرح الخطأ.
تحسين الكود المحدد
{selection}
أو {readfile}
لتحسين الدردشة باستخدام الذكاء الاصطناعي. (نفس الإمكانية المتوفرة للملفات السريعة)يمكن فتح شريط أنشطة الدردشة بالطرق التالية:
FlexiGPT: Ask
للنقر/الإدخالCtrl
/ Cmd
+ Shift
+ P
): يجب أن تحصل على خيار FlexiGPT: Ask
للنقر / الإدخالCtrl
+ Alt
+ A
ابحث عن أسئلة تجاوز سعة المكدس من المحرر الخاص بك.
Ctrl
+ Alt
+ S
FlexiGPT: Stackoverflow Search
للنقر/الإدخالCtrl
/ Cmd
+ Shift
+ P
): يجب أن تحصل على خيار FlexiGPT: Stackoverflow Search
للنقر / الإدخالcliCommands
في ملفات المطالبة الخاصة بك.Ctrl
+ Alt
+ C
FlexiGPT: Run CLI Command
للنقر/الإدخالCtrl
/ Cmd
+ Shift
+ P
): يجب أن تحصل على خيار FlexiGPT: Run CLI Command
للنقر/الإدخالمطالبات المهندس والضبط الدقيق وحفظها واستخدامها مباشرة داخل VSCode.
يدعم تعديلات معلمات الطلب لواجهات برمجة تطبيقات GPT
يمكن استخدام متغيرات النظام المحددة مسبقًا لتحسين سؤالك.
{system.selection}
أو {selection}
فقط لتمرير النص المحدد في المحرر (رمز أو غير ذلك).{system.readfile}
أو {readfile}
فقط لتمرير الملف المفتوح{system.readfile <your file path>}
لتمرير الملف في مسار معينsystem.
البادئة لمتغير النظام اختيارية. لذلك، يمكنك أيضًا استخدام {selection}
فقط لاستخدام النص المحدد، أو {language}
بدلاً من {system.language}
للغة ملفك.يدعم استجابة ما بعد المعالجة عبر ResponseHandlers في المطالبات. تتوفر معالجات استجابة محددة مسبقًا متعددة. كما يدعم معالجات الاستجابة المخصصة. يمكن العثور على مثال هنا .
يتم أيضًا دعم ميزة استدعاء الوظائف لنماذج GPT3.5/4. يمكن العثور على مثال في هذا الملف الفوري.
عند النقر على مربع نص الإدخال، يجب تحميل المطالبات الأساسية التي يوفرها FlexiGPT نفسه، وأي مطالبات محددة في flexigpt.promptFiles
، وأي مطالبات مدمجة ممكّنة باستخدام flexigpt.inBuiltPrompts
، كما هو محدد في التكوين. (إذا لم يؤدي النقر على مربع النص للمرة الأولى إلى تحميل بعض المطالبات التي تم تكوينها مسبقًا، فحاول الهروب من الخيارات والنقر مرة أخرى. قد يستغرق VSCode بعض الوقت لتحميل القوائم الديناميكية من الملفات.)
إذا قمت بتحديد المطالبات المكونة مسبقًا، فسيتم استخدام قالب السؤال المحدد في أمر الموجه بعد استبدال متغيرات النظام/المستخدم المحددة. سيتم أيضًا أخذ خيارات الأوامر الأخرى من التعريف نفسه.
إذا قمت بكتابة سؤال حر في مربع النص، فسيتم استخدام النص نفسه كسؤال مباشر. يمكنك استخدام متغيرات النظام المحددة مسبقًا لتحسين سؤالك العائم الحر أيضًا.
{selection}
لتمرير النص المحدد في المحرر{readfile}
لتمرير الملف المفتوح مطالبات FlexiGPT الأساسية (الإعداد الافتراضي: ممكّن)
الانتقال إلى المطالبات الأساسية (الافتراضي: معطل، تمكين في التكوين)
انتقل إلى مطالبات sqlx + squirrel (الافتراضي: معطل، تمكين في التكوين)
module . exports = {
namespace : "myprompts" ,
commands : [
{
name : "Refactor" ,
template : `Refactor following function.
function:
{system.selection}` ,
} ,
] ,
} ;
module . exports = {
namespace : "MyComplexPrompts" ,
commands : [
{
name : "Create unit test." ,
template : `Create unit test in {user.unitTestFramework} framework for following function.
code:
{system.selection}` ,
responseHandler : {
func : "writeFile" ,
args : {
filePath : "user.testFileName" ,
} ,
} ,
requestparams : {
model : "gpt-3.5-turbo" ,
stop : [ "##" , "func Test" , "package main" , "func main" ] ,
} ,
} ,
{
name : "Write godoc" ,
template : `Write godoc for following functions.
code:
{system.selection}` ,
responseHandler : {
func : "append" ,
args : {
position : "start" ,
} ,
} ,
requestparams : {
model : "code-davinci-002" ,
stop : [ "##" , "func Test" , "package main" , "func main" ] ,
} ,
} ,
] ,
functions : [
// you could also write your own responseHandler.
// Note that it takes a single object as input.
function myHandler ( { system , user } ) {
console . table ( { system } ) ;
console . table ( { user } ) ;
} ,
] ,
variables : [
{
name : "unitTestFramework" ,
value : "testing" ,
} ,
{
name : "testFileName" ,
value : ( { baseFolder , fileName , fileExtension } ) =>
` ${ baseFolder } \ ${ fileName } _test ${ fileExtension } ` ,
} ,
] ,
cliCommands : [
{
name : "Go generate all" ,
command : `go generate ./...` ,
description : "Run go generate in the workspace" ,
} ,
] ,
} ;
الاسم: مطلوب
الوصف: اختياري
القالب: مطلوب
{system.*variableName*}
، يمكن أن يكون اسم المتغير أحد متغيرات النظام المحددة مسبقًا. يمكنك أيضًا تمرير المعلمات إلى وظائف مثل readFile. على سبيل المثال: {readfile user.testFile}
هو متغير قالب صالح حيث يكون الإدخال لملف القراءة هو الملف المشار إليه بواسطة ملف الاختبار المتغير الذي يحدده المستخدم.{user.*variableName*}
، يجب أن يكون اسم المتغير في حقل المتغيرات في ملف المطالبة.معلمات الطلب: اختيارية
{ [key: string]: any }
.معالج الاستجابة: اختياري
يتم استخدام ResponseHandler للتعامل مع الاستجابة. بشكل افتراضي، يتم استخدام وظيفة الاستبدال. يمكن أن تكون وظيفة المقبض إحدى وظائف النظام المحددة مسبقًا أو وظيفة يحددها المستخدم.
يمكنك ضبط ResponseHandler بالطرق التالية:
responseHandler: "replace" ;
responseHandler: {
func : 'replace' ,
args : {
textToReplace : 'user.answerModified'
}
}
يمكن استخدام أي من عناصر variables
في قالب الأمر. يجب أن تحتوي القيم المعرفة من قبل المستخدم على البادئة "المستخدم". على سبيل المثال، إذا تم تعريف "testFileName" في المتغيرات، فيمكن استخدامه كـ "user.TestFileName" في ملف القالب أو تمريره إلى دالة.
يمكن أن تكون القيم المتغيرة ثابتة أو ديناميكية. بالنسبة للقيم الديناميكية، يجب عليك إنشاء طريقة getter. عند استدعاء المتغير getter، يتم تمرير كائن واحد يحتوي على متغيرات النظام (راجع متغيرات النظام المحددة مسبقًا) كوسيطة أولى، ويمكن اعتبار أي vars أخرى كوسيطات تالية.
module . exports = {
variables : [
{
//static
name : "testingFramework" ,
value : "xUnit"
} ,
{
//dynamic
name : "typeNameInResponse" ,
value : ( { answer /*system variable*/ } , myTestFile /*user defined var*/ ) => { }
} ,
]
functions : [
function extractTypeName ( { code , system } ) { /**/ } ,
function myOtherFunc ( ) { } ,
] ,
commands : [
{
name : "Create DTO" ,
template : `Create unit test with {user.testingFramework} for following class.
class:
{system.selection}` ,
responseHandler : {
func : 'writeFile' ,
args : {
filePath : 'user.typeNameInResponse' /*usage for function arg*/
}
}
}
]
}
جميع المتغيرات غير حساسة لحالة الأحرف.
اسم متغير | وصف |
---|---|
اختيار النظام | النص المحدد في المحرر |
سؤال النظام | سؤال مفتوح للذكاء الاصطناعي |
نظام.إجابة | إجابة OpenAI |
system.language | لغة برمجة الملف النشط |
system.baseFolder | المسار الأساسي للمشروع |
system.fileFolder | مسار المجلد الأصلي للملف النشط |
اسم الملف | اسم الملف النشط |
system.filePath | المسار الكامل للملف النشط |
system.fileExtension | امتداد الملف النشط |
system.commitAndTagList | آخر 25 التزامًا والعلامات المرتبطة بها |
ملف النظام | اقرأ ملف المحرر المفتوح بالكامل. قم بتمرير مسار ملف بشكل اختياري كوسيطة ثانية |
لاحظ أن system.
البادئة لمتغير النظام اختيارية. لذلك، يمكنك أيضًا استخدام {selection}
فقط لاستخدام النص المحدد، أو {language}
بدلاً من {system.language}
للغة ملفك.
functions
.اسم الوظيفة | وصف | المعلمات (الافتراضي) |
---|---|---|
إلحاق | إلحاق النص | textToAppend(system.answer)،postion('end') |
يستبدل | استبدال النص المحدد | textToReplace(system.answer) |
writeFile | كتابة النص إلى الملف. إلحاق إذا كان الملف موجودا. | مسار الملف ()، المحتوى (system.answer) |
يستبدل
استبدال النص بالتحديد. خذ textToReplace
للمعلمة الاختيارية القيمة الافتراضية تساوي إجابة API.
الاستخدام الافتراضي
...
commands : [
{
name : "Refactor" ,
template : `Refactor following function.
function:
{system.selection}`
responseHandler : 'replace'
} ,
] ,
الاستخدام مع البارامترات
...
commands : [
{
name : "Refactor" ,
template : `Refactor following function.
function:
{system.selection}`
responseHandler : {
func : 'replace' ,
args : {
textToReplace : 'user.answerModified'
}
}
} ,
] ,
variables : [
{
name : "answerModified" ,
value : ( { answer } ) => `/*n ${ anwer } n*/`
} ,
] ,
إلحاق
إلحاق النص بالتحديد. خذ textToAppend
المعلمة الاختيارية و postion
. يمكن أن يكون postion
start
أو end
في الوضع الافتراضي textToAppend
يساوي OpenAI postion
هو نهاية التحديد
استخدام العينة
...
commands : [
{
name : "Append" ,
template : `Write jsdoc for following function.
function:
{system.selection}`
responseHandler : {
func : 'append' ,
args : {
position : 'start'
}
}
} ,
] ,
الاسم: مطلوب
الوصف: اختياري
الأمر: مطلوب
المجالات الوظيفية | الميزات والتطبيقات | حالة |
المرونة في التحدث إلى أي منظمة العفو الدولية | التكامل مع العديد من موفري الذكاء الاصطناعي من خلال واجهات برمجة التطبيقات. | منتهي |
دعم اختيار المعلمة والتعامل مع هياكل الاستجابة المختلفة. | منتهي | |
المرونة في استخدام المطالبات المخصصة | دعم الهندسة السريعة التي تتيح إنشاء المطالبات وتعديلها عبر بنية قياسية. | منتهي |
السماح بتعديل معلمة الطلب | منتهي | |
السماح بإضافة معالجات استجابة مخصصة لتدليك الاستجابة من الذكاء الاصطناعي. | منتهي | |
قم بتوفير متغيرات شائعة محددة مسبقًا يمكن استخدامها لتحسين المطالبات | منتهي | |
توفير تحسينات سريعة إضافية باستخدام المتغيرات المخصصة التي يمكن أن تكون ثابتة أو دالة. يجب أن يسمح هذا بتعريفات الوظائف في بنية الموجه ودمج النتائج في المطالبات. السماح أيضًا بتمرير متغيرات النظام أو متغيرات المستخدم أو السلاسل الثابتة كمدخلات | منتهي | |
توفير القدرة على تقييم المطالبات المختلفة، وتعيين تقييمات ELO، واختيار الأقوى وحفظه | على المدى الطويل | |
تكامل سلس لواجهة المستخدم | صمم واجهة مستخدم مرنة، وهي واجهة دردشة مدمجة في شريط أنشطة VSCode. | منتهي |
يجب أن تدعم واجهة المستخدم حفظ المحادثات وتحميلها وتصديرها. | منتهي | |
قم بتنفيذ الكتابة المتدفقة في واجهة المستخدم، مما يخلق شعورًا بأن روبوت الذكاء الاصطناعي يكتب نفسه. | على المدى الطويل | |
الاستعلامات / المهام المخصصة | ساعد المطور في طرح استعلامات مخصصة على الذكاء الاصطناعي حيث يمكنه وصف الأسئلة أو المشكلات له باستخدام واجهة الدردشة. يمكن استخدام هذا لتصحيح المشكلات وفهم السلوك والحصول على تلميحات حول الأشياء التي يجب البحث عنها وما إلى ذلك. يجب أن يكون المطور قادرًا على إرفاق تعليمات برمجية أو ملفات بأسئلته. | منتهي |
توفير طريقة لتحديد أوامر CLI المطبوخة مسبقًا وإطلاقها حسب الحاجة. يجب أن تكون واجهة تعريف أوامر CLI مشابهة للمطالبات. | منتهي | |
توفير طريقة للبحث في الاستعلامات على StackOverflow. | منتهي | |
قم بتوفير طريقة للحصول على نتائج للاستعلامات من إجابات StackOverflow وإجابة الذكاء الاصطناعي المقابلة. | على المدى الطويل | |
إكمال الكود والذكاء | توفير طريقة لإنشاء التعليمات البرمجية من تعليق التعليمات البرمجية | منتهي |
قم بتوفير طريقة لإكمال التعليمات البرمجية أو إعادة تصميمها أو تحريرها أو تحسينها عبر واجهة الدردشة. يجب أن يسمح باختيار التعليمات البرمجية ذات الصلة من المحرر حسب الحاجة. | منتهي | |
قم بتنفيذ نظام إدارة السياق المتكامل مع بروتوكول خادم اللغة (LSP) الذي يمكن استخدامه لإثراء تفاعلات الذكاء الاصطناعي. | متوسطة المدى | |
دعم إنشاء تضمينات التعليمات البرمجية لفهم سياق التعليمات البرمجية ودمجها في المطالبات. | متوسطة المدى | |
قم بتطوير ميزة إكمال التعليمات البرمجية الذكية التي تتنبأ بالأسطر التالية من التعليمات البرمجية. يجب أن يقوم بدمج السياق (LSP أو التضمينات) في مطالبات الإكمال التلقائي والتعامل مع استجابات الإكمال التلقائي في واجهة المستخدم. | متوسطة المدى | |
مراجعة الكود والاستخبارات | توفير طريقة للمراجعة عبر واجهة الدردشة. يجب أن يسمح باختيار التعليمات البرمجية ذات الصلة من المحرر حسب الحاجة | منتهي |
القدرة على جلب طلب دمج/سحب من Github أو Gitlab أو موفري الإصدارات الآخرين وتحليلهم وتقديم تعليقات المراجعة. يجب أن يوفر المرونة لتحديد مجالات المراجعة والأولوية المرتبطة بها اعتمادًا على حالة الاستخدام. | متوسطة المدى | |
تقديم مراجعات وتوصيات التعليمات البرمجية الآلية. يجب أن توفر مؤشرات دقيقة لتحسينات التعليمات البرمجية والتعامل مع استجابات واجهة برمجة التطبيقات لمراجعة التعليمات البرمجية في واجهة المستخدم. | على المدى الطويل | |
تقديم اقتراحات إعادة الهيكلة الآلية. يجب أن يتعامل هذا مع استجابات واجهة برمجة التطبيقات (API) الخاصة بإعادة البناء وعرض الاقتراحات في واجهة المستخدم. | على المدى الطويل | |
تقديم اقتراحات أمنية تلقائية. يجب أن يكون هذا قادرًا على تحديد نقاط الضعف المحتملة التي تتم إضافتها أو الانحرافات عن أفضل ممارسات الأمان المستخدمة في التعليمات البرمجية. | على المدى الطويل | |
المساعدة في توثيق الكود | قم بإنشاء وثائق للكود المحدد باستخدام واجهة الدردشة. يجب أن يسمح باختيار التعليمات البرمجية ذات الصلة من المحرر حسب الحاجة. | منتهي |
تطوير مساعدة التوثيق المضمنة الفعالة. يجب أن يقوم تلقائيًا بإنشاء الوثائق وتحديثها بناءً على الكود وعرضها في واجهة المستخدم. | على المدى الطويل | |
فهم الكود ودعم التعلم | توفير طريقة لشرح الكود عبر واجهة الدردشة. يجب أن يسمح باختيار التعليمات البرمجية ذات الصلة من المحرر حسب الحاجة. | منتهي |
التطوير/التكامل مع الرسم البياني المعرفي المتكامل لتقديم شرح تفصيلي للخدمات وواجهات برمجة التطبيقات والأساليب والخوارزميات والمفاهيم التي يستخدمها المطور أو قد يرغب في استخدامها | على المدى الطويل | |
دمج البحث في الرسم البياني في المطالبات | على المدى الطويل | |
اختبار | توفير طريقة لإنشاء اختبارات الوحدة عبر واجهة الدردشة. يجب أن يسمح باختيار التعليمات البرمجية ذات الصلة من المحرر حسب الحاجة. يجب أن يكون لديك القدرة على إدراج الاختبارات في الملفات الجديدة أو الملف الحالي حسب الحاجة. | منتهي |
توفير طريقة لإنشاء واجهة برمجة التطبيقات (API) واختبارات سير العمل المرتبطة بها عبر واجهة الدردشة. يجب أن يسمح باختيار تعريفات التعليمات البرمجية/واجهة برمجة التطبيقات ذات الصلة من المحرر حسب الحاجة. يجب أن يكون لديك القدرة على إدراج الاختبارات في الملفات الجديدة أو الملف الحالي حسب الحاجة. | على المدى القصير |
FlexiGPT هو برنامج مفتوح المصدر بالكامل مرخص بموجب ترخيص MIT.
المساهمات هي موضع ترحيب! لا تتردد في تقديم طلب سحب على GitHub.
إذا كان لديك أي أسئلة أو مشاكل، يرجى فتح مشكلة على GitHub في صفحة المشكلات.