作為高級用戶與 GPT AI 模型互動。
支援多個AI提供者
豐富及時的工程支持
靈活的使用者介面
從編輯器中搜尋 Stack Overflow
從編輯器中呼叫預先編寫的自訂 CLI 命令
從 VSCode Marketplace 下載並按照說明進行操作。
或者
步驟:
Ctrl
- Shift
- P
(Windows、Linux) 或Cmd
- Shift
- P
(macOS) 中,執行> Extensions: Install Extension
。ppipada
的擴充FlexiGPT
。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 帳戶設定中取得一份。
支援的API
支援的型號 - 以上兩個API支援的所有型號
gpt-4
gpt-4-*
gpt-3.5-turbo
gpt-3.5-turbo-*
FlexiGPT 使用 defaultChatCompletionModel: gpt-3.5-turbo
,除非提示覆寫它。
有關如何使用 OpenAI 的Function calling
功能的範例,請查看此處的提示檔案。
配置選項:
gpt-3.5-turbo
。請注意, gpt-3.5-turbo
使用量計入 OpenAI 計費中。截至 2023 年 2 月,唯一處於測試階段的免費型號是 codex ( code-davinci-002
)。https://api.openai.com
。 Anthropic 提供者需要 API 金鑰才能運作。您可以從此處的 Anthropic 網站取得一份。
支援的API
claude-3-*
, claude-2*
FlexiGPT 使用 defaultChatCompletionModel: claude-3-haiku-20240307
,除非提示覆寫它。
配置選項:
claude-3-haiku-20240307
。https://api.anthropic.com
。 Huggingface 提供者需要 API 金鑰才能運作。您可以從這裡的huggingface 網站取得一份。
支援的API
支援的型號 - 以上 API 支援的所有型號
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 金鑰才能運作。您可以從此處的網站取得一份。
支援的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 伺服器
支援的API
your host:port of the llama server
/completion支援的型號 - 上述 API 支援的所有型號。請注意,llama.cpp 中的模型需要在運行伺服器本身時給出,並且不能在每個請求層級都給出。
配置選項:
http://127.0.0.1:8080
。使用編輯器中的註解取得程式碼。
Ctrl
+ Alt
+ G
FlexiGPT: Get Code
選項來點選/輸入取得以下所有功能的步驟(與所有配置的提示類似;內建或自訂):
Ctrl
+ Alt
+ A
調用修正和重構選定的程式碼。
為選定的程式碼建立單元測試。
完成選擇。
解釋一下選擇。
為所選程式碼產生文件。
找出選擇中的問題,修復它們並解釋錯誤所在。
優化所選程式碼
{selection}
或{readfile}
來增強與 AI 的聊天。 (與提示檔案具有相同的功能)聊天活動欄可以透過以下方式開啟:
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 API請求參數修改
預先定義的系統變數可用於增強您的問題。
{system.selection}
或僅使用{selection}
在編輯器中傳遞所選文字(程式碼或其他)。{system.readfile}
或僅使用{readfile}
傳遞開啟的文件{system.readfile <your file path>}
傳遞給定路徑的文件system.
系統變數的前綴是可選的。因此,您甚至可以只使用{selection}
來使用所選文本,或使用{language}
而不是{system.language}
作為文件的語言。支援透過提示中的responseHandlers 進行後處理回應。多個內建的預定義響應處理程序可用。也支援自訂responseHandler。範例可以在這裡找到。
也支援GPT3.5/4型號的函數呼叫功能。範例可以在此提示文件中找到。
當您按一下輸入文字方塊時,應載入 FlexiGPT 本身提供的基本提示、在flexigpt.promptFiles
中定義的任何提示以及使用flexigpt.inBuiltPrompts
啟用的任何內建提示(如設定中定義)。 (如果第一次按一下文字方塊未載入某些預先設定的提示,請嘗試轉義選項並再次按一下。VSCode 可能需要一些時間才能從檔案載入動態清單。)
如果您選擇預先配置的提示,則在替換定義的系統/使用者變數後將使用提示命令中定義的問題範本。其他命令選項也將從定義本身取得。
如果您在文字方塊中輸入自由浮動問題,文字本身將直接用作提示。您也可以使用預先定義的系統變數來增強您的自由浮動問題。
{selection}
傳遞編輯器中選定的文本{readfile}
傳遞開啟的文件FlexiGPT 基本提示(預設:啟用)
Go基本提示(預設:停用,在設定中啟用)
Go 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*}
,variableName 可以是預定義系統變數之一。您也可以將參數傳遞給 readFile 等函數。例如: {readfile user.testFile}
是一個有效的模板變量,其中 readfile 的輸入是使用者定義的變數 testfile 所指向的檔案。{user.*variableName*}
,variableName 必須位於提示檔案的變數欄位中。請求參數:可選
{ [key: string]: any }
的物件。回應處理程序:可選
responseHandler 用於處理回應。預設使用替換功能。句柄函數可以是預先定義的系統函數或使用者定義的函數之一。
您可以透過以下方式設定responseHandler:
responseHandler: "replace" ;
responseHandler: {
func : 'replace' ,
args : {
textToReplace : 'user.answerModified'
}
}
任何variables
項都可以在命令範本中使用。使用者定義的值必須具有“user”前綴。例如,如果在變數中定義“testFileName”,則可以將其用作模板檔案中的“user.TestFileName”或傳遞給函數。
變數值可以是靜態的或動態的。對於動態值,您應該建立一個 getter 方法。當呼叫變數 getter 時,帶有系統變數的單一物件(請參閱預定義系統變數)會作為第一個參數傳遞,任何其他變數都可以作為下一個參數。
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 問題 |
系統答案 | OpenAI 答案 |
系統語言 | 活動文件的程式語言 |
系統.baseFolder | 專案基本路徑 |
系統檔案資料夾 | 活動文件的父資料夾路徑 |
系統檔案名稱 | 活動文件的名稱 |
系統檔案路徑 | 活動文件的完整路徑 |
系統檔案副檔名 | 活動檔案的副檔名 |
system.commitAndTagList | 最近 25 次提交和關聯標籤 |
系統讀取檔案 | 閱讀完整開啟的編輯器文件。可選地傳遞檔案路徑作為第二個參數 |
注意system.
系統變數的前綴是可選的。因此,您甚至可以只使用{selection}
來使用所選文本,或使用{language}
而不是{system.language}
作為文件的語言。
functions
列表中。函數名稱 | 描述 | 參數(預設) |
---|---|---|
附加 | 附加文字 | textToAppend(system.answer),postion('end') |
代替 | 替換選定的文本 | 要替換的文字(系統.answer) |
寫文件 | 將文字寫入文件。若檔案存在則追加。 | 文件路徑(),內容(系統.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'
}
}
} ,
] ,
姓名:必填
描述:可選
命令:必填
功能區 | 特徵和實現 | 地位 |
與任何人工智慧對話的靈活性 | 透過 API 與多個 AI 提供者整合。 | 完畢 |
支援參數選擇並處理不同的響應結構。 | 完畢 | |
靈活使用自訂提示 | 支援提示工程,可透過標準結構建立和修改提示。 | 完畢 |
允許修改請求參數 | 完畢 | |
允許添加自訂回應處理程序來處理來自 AI 的回應。 | 完畢 | |
提供常用的預定義變量,可用於增強提示 | 完畢 | |
使用可以是靜態變數或函數 getter 的自訂變數提供額外的提示增強功能。這應該允許提示結構中的函數定義並將結果整合到提示中。也允許傳遞系統變數或使用者變數或靜態字串作為輸入 | 完畢 | |
提供評估不同提示、分配 ELO 評級、選擇並保存最強者的功能 | 長期 | |
無縫的用戶介面集成 | 設計靈活的UI,將聊天介面整合到VSCode活動欄中。 | 完畢 |
UI 必須支援儲存、載入和匯出對話。 | 完畢 | |
在 UI 中實現串流輸入,營造出 AI 機器人正在自行輸入的感覺。 | 長期 | |
即席查詢/任務 | 幫助開發人員向 AI 提出臨時查詢,他可以使用聊天介面向 AI 描述問題。這可用於偵錯問題、理解行為、取得有關需要注意的事項的提示等。 | 完畢 |
提供定義預定義 CLI 命令並根據需要觸發它們的方法。定義 CLI 指令的介面應與提示類似。 | 完畢 | |
提供一種在 StackOverflow 上搜尋查詢的方法。 | 完畢 | |
提供一種從 StackOverflow 答案和對應的 AI 答案中取得查詢結果的方法。 | 長期 | |
程式碼完成和智能 | 提供一種從程式碼註釋產生程式碼的方法 | 完畢 |
提供一種透過聊天介面完成、重構、編輯或優化程式碼的方法。應允許根據需要從編輯器中選擇相關代碼。 | 完畢 | |
實施與語言伺服器協定 (LSP) 整合的上下文管理系統,可用於豐富 AI 互動。 | 中期 | |
支援生成程式碼嵌入以理解程式碼上下文並將其整合到提示中。 | 中期 | |
開發智慧程式碼完成功能來預測下一行程式碼。它應該將上下文(LSP 或嵌入)整合到自動完成提示中,並處理 UI 中的自動完成回應。 | 中期 | |
代碼審查和情報 | 提供透過聊天介面進行審核的方式。應該允許根據需要從編輯器中選擇相關程式碼 | 完畢 |
能夠從 Github、Gitlab 或其他版本提供者取得合併/拉取請求,對其進行分析並提供審核意見。應根據用例靈活地指定審查領域和相關優先順序。 | 中期 | |
提供自動程式碼審查和建議。它應該為程式碼改進提供微妙的指標,並在 UI 中處理程式碼審查 API 回應。 | 長期 | |
提供自動化重構建議。這應該處理重構 API 回應並在 UI 中顯示建議。 | 長期 | |
提供自動化的安全建議。這應該能夠識別添加的潛在漏洞或程式碼中使用的安全最佳實踐的偏差。 | 長期 | |
程式碼文檔幫助 | 使用聊天介面為所選程式碼產生文件。應允許根據需要從編輯器中選擇相關代碼。 | 完畢 |
開發有效的內聯文件幫助。它應該根據程式碼自動產生和更新文件並將其顯示在 UI 中。 | 長期 | |
程式碼理解與學習支持 | 提供一種透過聊天介面解釋程式碼的方法。應允許根據需要從編輯器中選擇相關代碼。 | 完畢 |
與集成知識圖進行開發/集成,以提供開發人員正在使用或可能想要使用的服務、API、方法、演算法和概念的詳細解釋 | 長期 | |
將圖形搜尋整合到提示中 | 長期 | |
測試 | 提供一種透過聊天介面產生單元測試的方法。應允許根據需要從編輯器中選擇相關代碼。應該能夠根據需要在新文件或當前文件中插入測試。 | 完畢 |
提供一種透過聊天介面產生 API 和相關工作流程測試的方法。應允許根據需要從編輯器中選擇相關程式碼/API 定義。應該能夠根據需要在新文件或當前文件中插入測試。 | 短期 |
FlexiGPT 是一款根據 MIT 授權授權的完全開源軟體。
歡迎貢獻!請隨時在 GitHub 上提交拉取請求。
如果您有任何疑問或問題,請在 GitHub 的問題頁面上開啟問題。