Berinteraksi dengan model GPT AI sebagai power user.
Mendukung banyak penyedia AI
Dukungan teknik cepat yang kaya
UI yang fleksibel
Cari Stack Overflow dari dalam editor
Aktifkan perintah CLI khusus yang telah disiapkan sebelumnya dari dalam editor Anda
Unduh dari: VSCode Marketplace dan ikuti instruksi.
ATAU
Tangga:
Ctrl
- Shift
- P
(Windows, Linux) atau Cmd
- Shift
- P
(macOS), jalankan > Extensions: Install Extension
.FlexiGPT
oleh ppipada
.Ctrl
/ Cmd
+ ,
pintasan keyboard) dan cari flexigpt
.Pilihan:
// 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 " ,
Penyedia OpenAI memerlukan kunci API agar dapat berfungsi. Anda bisa mendapatkannya dari pengaturan akun openAI Anda di sini.
API yang didukung
Model yang didukung - Semua model didukung oleh dua API di atas
gpt-4
gpt-4-*
gpt-3.5-turbo
gpt-3.5-turbo-*
FlexiGPT menggunakan defaultChatCompletionModel: gpt-3.5-turbo
, kecuali jika perintah menimpanya.
Sebagai contoh tentang cara menggunakan fitur Function calling
OpenAI, lihat file prompt ini di sini.
Opsi Konfigurasi:
gpt-3.5-turbo
. Perlu diperhatikan bahwa penggunaan gpt-3.5-turbo
diperhitungkan dalam penagihan OpenAI. Satu-satunya model gratis yang masih dalam versi beta mulai Februari 2023 adalah codex ( code-davinci-002
).https://api.openai.com
. Penyedia antropik memerlukan kunci API agar dapat berfungsi. Anda dapat memperolehnya dari situs web Anthropic di sini.
API yang didukung
claude-3-*
, claude-2*
FlexiGPT menggunakan defaultChatCompletionModel: claude-3-haiku-20240307
, kecuali jika perintah menimpanya.
Opsi Konfigurasi:
claude-3-haiku-20240307
.https://api.anthropic.com
. Penyedia Huggingface memerlukan kunci API agar dapat berfungsi. Anda dapat memperolehnya dari situs web huggingface di sini.
API yang didukung
Model yang didukung - Semua model didukung oleh API di atas
FlexiGPT menggunakan defaultChatCompletionModel: deepseek-ai/deepseek-coder-1.3b-instruct
, kecuali jika perintah menimpanya.
Opsi Konfigurasi:
deepseek-ai/deepseek-coder-1.3b-instruct
.bigcode/starcoder2-15b
.https://api-inference.huggingface.co
. Penyedia Googlegl memerlukan kunci API agar dapat berfungsi. Anda dapat memperolehnya dari situs web di sini.
API yang didukung: https://ai.google.dev/api/rest/v1/models/generateContent
gemini-1.0-pro
chat-bison-001
(warisan)text-bison-001
(warisan) FlexiGPT menggunakan defaultChatCompletionModel: gemini-1.0-pro
, kecuali jika perintah menimpanya.
Opsi Konfigurasi:
gemini-1.0-pro
.gemini-1.0-pro
.https://generativelanguage.googleapis.com
. Siapkan server llama.cpp seperti yang disebutkan di sini
API yang didukung
your host:port of the llama server
/penyelesaianModel yang didukung - Semua model yang didukung oleh API di atas. Perhatikan bahwa model di llama.cpp perlu diberikan saat menjalankan server itu sendiri dan tidak dapat diberikan pada setiap tingkat permintaan.
Opsi Konfigurasi:
http://127.0.0.1:8080
.Dapatkan kode menggunakan komentar di editor.
Ctrl
+ Alt
+ G
FlexiGPT: Get Code
untuk mengklik/masukLangkah-langkah untuk mendapatkan semua fungsi di bawah ini (mirip untuk semua perintah yang dikonfigurasi; bawaan atau khusus):
Ctrl
+ Alt
+ A
Perbaiki dan perbaiki kode yang dipilih.
Buat pengujian unit untuk kode yang dipilih.
Selesaikan seleksi.
Jelaskan pemilihannya.
Hasilkan dokumentasi untuk kode yang dipilih.
Temukan masalah dalam pemilihan, perbaiki dan jelaskan apa yang salah.
Optimalkan kode yang dipilih
{selection}
atau {readfile}
untuk menyempurnakan obrolan Anda dengan AI. (Kemampuan yang sama seperti yang tersedia untuk file prompt)Bilah aktivitas obrolan dapat dibuka dengan cara berikut:
FlexiGPT: Ask
untuk mengklik/masukCtrl
/ Cmd
+ Shift
+ P
): Anda harus mendapatkan opsi FlexiGPT: Ask
untuk mengklik/memasukiCtrl
+ Alt
+ A
Telusuri pertanyaan stack overflow dari editor Anda.
Ctrl
+ Alt
+ S
FlexiGPT: Stackoverflow Search
untuk mengklik/masukCtrl
/ Cmd
+ Shift
+ P
): Anda harus mendapatkan opsi FlexiGPT: Stackoverflow Search
untuk mengklik/memasukicliCommands
di file prompt Anda.Ctrl
+ Alt
+ C
FlexiGPT: Run CLI Command
untuk mengklik/masukCtrl
/ Cmd
+ Shift
+ P
): Anda harus mendapatkan opsi FlexiGPT: Run CLI Command
untuk mengklik/memasukiRancang dan sesuaikan perintahnya, simpan dan gunakan langsung dalam VSCode.
Mendukung modifikasi parameter permintaan untuk API GPT
Variabel sistem yang telah ditentukan sebelumnya dapat digunakan untuk menyempurnakan pertanyaan Anda.
{system.selection}
atau cukup {selection}
untuk meneruskan teks yang dipilih di editor (kode atau lainnya).{system.readfile}
atau cukup {readfile}
untuk meneruskan file yang terbuka{system.readfile <your file path>}
untuk meneruskan file pada jalur tertentusystem.
awalan untuk variabel sistem adalah opsional. Oleh karena itu, Anda bahkan hanya dapat menggunakan {selection}
untuk menggunakan teks yang dipilih, atau {language}
sebagai ganti {system.language}
untuk bahasa file Anda.Mendukung respons pasca-pemrosesan melalui responHandlers di prompt. Tersedia beberapa responHandler bawaan yang telah ditentukan sebelumnya. Juga mendukung responHandlers khusus. Contohnya dapat ditemukan di sini.
Fitur pemanggilan fungsi model GPT3.5/4 juga didukung. Contoh dapat ditemukan di file prompt ini.
Saat mengklik kotak teks masukan, perintah dasar yang disediakan oleh FlexiGPT itu sendiri, perintah apa pun yang ditentukan dalam flexigpt.promptFiles
, dan perintah bawaan apa pun yang diaktifkan menggunakan flexigpt.inBuiltPrompts
, sebagaimana ditentukan dalam konfigurasi harus dimuat. (Jika klik pertama pada kotak teks tidak memuat beberapa perintah yang telah dikonfigurasi sebelumnya, coba keluar dari opsi dan klik lagi. VSCode mungkin memerlukan waktu untuk memuat daftar dinamis dari file.)
Jika Anda memilih prompt yang telah dikonfigurasi sebelumnya, templat pertanyaan yang ditentukan dalam perintah prompt akan digunakan setelah mengganti variabel sistem/pengguna yang ditentukan. Pilihan perintah lainnya juga akan diambil dari definisi itu sendiri.
Jika Anda mengetik pertanyaan mengambang bebas di kotak teks, teks itu sendiri akan langsung digunakan sebagai prompt. Anda juga dapat menggunakan variabel sistem yang telah ditentukan sebelumnya untuk menyempurnakan pertanyaan mengambang bebas Anda.
{selection}
untuk meneruskan teks yang dipilih di editor{readfile}
untuk meneruskan file yang terbuka Perintah dasar FlexiGPT (Default: diaktifkan)
Buka perintah dasar (Default: dinonaktifkan, aktifkan dalam konfigurasi)
Buka sqlx + tupai meminta (Default: dinonaktifkan, aktifkan dalam konfigurasi)
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" ,
} ,
] ,
} ;
nama: Wajib
deskripsi: Opsional
templat: Wajib
{system.*variableName*}
, Namavariabel dapat menjadi salah satu Variabel Sistem yang Telah Ditentukan Sebelumnya. Anda juga dapat meneruskan parameter ke fungsi seperti readFile. Misalnya: {readfile user.testFile}
adalah variabel templat yang valid dimana input ke readfile adalah file yang ditunjuk oleh variabel yang ditentukan pengguna testfile.{user.*variableName*}
, Namavariabel harus ada di bidang variabel dalam file prompt.parameter permintaan: opsional
{ [key: string]: any }
.responHandler: Opsional
responHandler digunakan untuk menangani respons. Secara default, fungsi ganti digunakan. Fungsi pegangan dapat berupa salah satu Fungsi Sistem Standar atau fungsi yang ditentukan Pengguna.
Anda dapat mengatur responHandler dengan cara berikut:
responseHandler: "replace" ;
responseHandler: {
func : 'replace' ,
args : {
textToReplace : 'user.answerModified'
}
}
Item variables
apa pun dapat digunakan dalam templat perintah. Nilai yang ditentukan pengguna harus memiliki awalan "pengguna". Misalnya, jika "testFileName" didefinisikan dalam variabel, maka dapat digunakan sebagai "user.TestFileName" dalam file templat atau diteruskan ke suatu fungsi.
Nilai variabel bisa statis atau dinamis. Untuk nilai dinamis, Anda harus membuat metode pengambil. Saat memanggil pengambil variabel, satu objek dengan variabel sistem (lihat Variabel Sistem Standar) dilewatkan sebagai argumen pertama, var lainnya dapat diambil sebagai argumen berikutnya..
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*/
}
}
}
]
}
Semua var tidak membedakan huruf besar dan kecil.
Nama Variabel | Keterangan |
---|---|
sistem.seleksi | Teks yang dipilih di editor |
sistem.pertanyaan | pertanyaan OpenAI |
sistem.jawaban | Jawaban OpenAI |
sistem.bahasa | Bahasa pemrograman file aktif |
sistem.baseFolder | Jalur dasar proyek |
sistem.fileFolder | Jalur folder induk dari file aktif |
sistem.namafile | Nama file yang aktif |
sistem.filePath | Jalur lengkap file aktif |
sistem.fileExtension | Ekstensi file aktif |
sistem.commitAndTagList | 25 komitmen terakhir dan tag terkait |
sistem.readFile | Baca file editor terbuka penuh. Secara opsional, berikan jalur file sebagai argumen kedua |
Perhatikan bahwa system.
awalan untuk variabel sistem adalah opsional. Oleh karena itu, Anda bahkan hanya dapat menggunakan {selection}
untuk menggunakan teks yang dipilih, atau {language}
sebagai ganti {system.language}
untuk bahasa file Anda.
functions
.Nama Fungsi | Keterangan | param(default) |
---|---|---|
menambahkan | Tambahkan Teks | textToAppend(sistem.jawaban),posisi('akhir') |
mengganti | Ganti teks yang dipilih | textToReplace(sistem.jawaban) |
menulisFile | Tulis teks ke file. Tambahkan jika file ada. | filePath(),konten(sistem.jawaban) |
Mengganti
Ganti teks dengan pilihan. Ambil parameter opsional textToReplace
Dalam nilai default sama dengan jawaban API.
Penggunaan Bawaan
...
commands : [
{
name : "Refactor" ,
template : `Refactor following function.
function:
{system.selection}`
responseHandler : 'replace'
} ,
] ,
Penggunaan dengan params
...
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*/`
} ,
] ,
Menambahkan
Tambahkan teks dengan pilihan. Ambil parameter opsional textToAppend
dan postion
. postion
dapat menjadi start
atau end
Secara default textToAppend
sama dengan postion
OpenAI adalah akhir pilihan
Contoh penggunaan
...
commands : [
{
name : "Append" ,
template : `Write jsdoc for following function.
function:
{system.selection}`
responseHandler : {
func : 'append' ,
args : {
position : 'start'
}
}
} ,
] ,
nama: Wajib
deskripsi: Opsional
perintah: Diperlukan
Area fungsional | Fitur dan Implementasi | Status |
Fleksibilitas untuk berbicara dengan AI apa pun | Integrasi dengan beberapa penyedia AI melalui API. | Selesai |
Mendukung pemilihan parameter dan menangani struktur respons yang berbeda. | Selesai | |
Fleksibilitas untuk menggunakan perintah khusus | Dukungan untuk rekayasa cepat yang memungkinkan pembuatan dan modifikasi perintah melalui struktur standar. | Selesai |
Izinkan modifikasi parameter permintaan | Selesai | |
Izinkan penambahan penangan respons khusus untuk memanfaatkan respons dari AI. | Selesai | |
Berikan variabel umum yang telah ditentukan sebelumnya yang dapat digunakan untuk menyempurnakan petunjuknya | Selesai | |
Berikan penyempurnaan ekstra cepat menggunakan variabel khusus yang dapat berupa pengambil fungsi atau statis. Ini harus memungkinkan definisi fungsi dalam struktur prompt dan mengintegrasikan hasilnya ke dalam prompt. Izinkan juga meneruskan var sistem atau var pengguna atau string statis sebagai input | Selesai | |
Memberikan kemampuan untuk mengevaluasi perintah yang berbeda, menetapkan peringkat ELO, memilih dan menyimpan yang terkuat | Jangka panjang | |
Integrasi UI yang mulus | Rancang UI yang fleksibel, antarmuka obrolan yang terintegrasi ke dalam bilah aktivitas VSCode. | Selesai |
UI harus mendukung penyimpanan, pemuatan, dan ekspor percakapan. | Selesai | |
Menerapkan pengetikan streaming di UI, menciptakan perasaan bahwa bot AI sedang mengetik sendiri. | Jangka panjang | |
Kueri/tugas ad hoc | Bantu pengembang mengajukan pertanyaan ad hoc ke AI di mana dia dapat menjelaskan pertanyaan atau masalah tersebut menggunakan antarmuka obrolan. Ini dapat digunakan untuk men-debug masalah, memahami perilaku, mendapatkan petunjuk tentang hal-hal yang harus diperhatikan, dll. Pengembang harus dapat melampirkan kode atau file ke pertanyaannya. | Selesai |
Menyediakan cara untuk menentukan perintah CLI yang telah disiapkan sebelumnya dan mengaktifkannya sesuai kebutuhan. Antarmuka untuk mendefinisikan perintah CLI harus serupa dengan petunjuknya. | Selesai | |
Menyediakan cara untuk mencari kueri di StackOverflow. | Selesai | |
Menyediakan cara untuk mendapatkan hasil kueri dari jawaban StackOverflow dan jawaban AI yang sesuai. | Jangka panjang | |
Penyelesaian kode dan kecerdasan | Menyediakan cara untuk menghasilkan kode dari komentar kode | Selesai |
Berikan cara untuk menyelesaikan, memfaktorkan ulang, mengedit, atau mengoptimalkan kode melalui antarmuka obrolan. Harus memungkinkan pemilihan kode yang relevan dari editor sesuai kebutuhan. | Selesai | |
Menerapkan sistem manajemen konteks yang terintegrasi dengan Language Server Protocol (LSP) yang dapat digunakan untuk memperkaya interaksi AI. | Jangka menengah | |
Mendukung pembuatan penyematan kode untuk memahami konteks kode dan mengintegrasikannya ke dalam perintah. | Jangka menengah | |
Kembangkan fitur penyelesaian kode cerdas yang memprediksi baris kode berikutnya. Ini harus mengintegrasikan konteks (LSP atau embeddings) ke dalam perintah pelengkapan otomatis dan menangani respons pelengkapan otomatis di UI. | Jangka menengah | |
Tinjauan kode dan intelijen | Berikan cara untuk meninjau melalui antarmuka obrolan. Harus memungkinkan pemilihan kode yang relevan dari editor sesuai kebutuhan | Selesai |
Kemampuan untuk mengambil permintaan Penggabungan/Tarik dari Github, Gitlab, atau penyedia versi lainnya, menganalisisnya, dan memberikan komentar ulasan. Harus memberikan fleksibilitas untuk menentukan area tinjauan dan prioritas terkait bergantung pada kasus penggunaan. | Jangka menengah | |
Memberikan tinjauan dan rekomendasi kode otomatis. Ini harus memberikan indikator halus untuk peningkatan kode dan menangani respons API peninjauan kode di UI. | Jangka panjang | |
Berikan saran pemfaktoran ulang otomatis. Ini harus menangani pemfaktoran ulang respons API dan menampilkan saran di UI. | Jangka panjang | |
Memberikan saran keamanan otomatis. Hal ini harus dapat mengidentifikasi potensi kerentanan yang ditambahkan atau penyimpangan dari praktik terbaik keamanan yang digunakan dalam kode. | Jangka panjang | |
Bantuan dokumentasi kode | Hasilkan dokumentasi untuk kode yang dipilih menggunakan antarmuka obrolan. Harus memungkinkan pemilihan kode yang relevan dari editor sesuai kebutuhan. | Selesai |
Kembangkan bantuan dokumentasi inline yang efektif. Ini akan secara otomatis menghasilkan dan memperbarui dokumentasi berdasarkan kode dan menampilkannya di UI. | Jangka panjang | |
Pemahaman Kode dan Dukungan Pembelajaran | Berikan cara untuk menjelaskan kode melalui antarmuka obrolan. Harus memungkinkan pemilihan kode yang relevan dari editor sesuai kebutuhan. | Selesai |
Kembangkan/Integrasikan dengan grafik pengetahuan terintegrasi untuk memberikan penjelasan rinci tentang Layanan, API, metode, algoritma, dan konsep yang digunakan atau mungkin ingin digunakan oleh pengembang | Jangka panjang | |
Integrasikan penelusuran grafik ke dalam perintah | Jangka panjang | |
Pengujian | Menyediakan cara untuk menghasilkan pengujian unit melalui antarmuka obrolan. Harus memungkinkan pemilihan kode yang relevan dari editor sesuai kebutuhan. Harus memiliki kemampuan untuk memasukkan tes ke dalam file baru atau file saat ini sesuai kebutuhan. | Selesai |
Menyediakan cara untuk menghasilkan API dan pengujian alur kerja terkait melalui antarmuka obrolan. Harus memungkinkan pemilihan definisi kode/api yang relevan dari editor sesuai kebutuhan. Harus memiliki kemampuan untuk memasukkan tes ke dalam file baru atau file saat ini sesuai kebutuhan. | Jangka pendek |
FlexiGPT adalah perangkat lunak sumber terbuka sepenuhnya yang dilisensikan di bawah lisensi MIT.
Kontribusi dipersilahkan! Jangan ragu untuk mengirimkan permintaan tarik di GitHub.
Jika Anda mempunyai pertanyaan atau masalah, silakan buka terbitan di GitHub di halaman terbitan.