パワー ユーザーとして GPT AI モデルを操作します。
複数の AI プロバイダーをサポート
充実した迅速なエンジニアリングサポート
柔軟なUI
エディタ内からスタック オーバーフローを検索する
エディタ内から事前に作成されたカスタム 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
サポートされているモデル - 上記 2 つの 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 Web サイトから入手できます。
サポートされている API
claude-3-*
、 claude-2*
FlexiGPT は、プロンプトがオーバーライドしない限り、defaultChatCompletionModel: claude-3-haiku-20240307
を使用します。
構成オプション:
claude-3-haiku-20240307
。https://api.anthropic.com
。 Huggface プロバイダーが機能するには API キーが必要です。ハグフェイス Web サイトのこちらから入手できます。
サポートされている 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 キーが必要です。こちらの Web サイトから入手できます。
サポートされている 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}
のみを使用して選択したテキストを使用したり、ファイルの言語として{system.language}
の代わりに{language}
を使用したりすることもできます。プロンプト内のresponseHandlersを介した後処理応答をサポートします。複数の組み込みの事前定義された responseHandler が使用可能です。カスタムの 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 を事前定義されたシステム変数の 1 つにすることができます。 readFile などの関数にパラメータを渡すこともできます。例: {readfile user.testFile}
readfile への入力がユーザー定義変数 testfile によって指定されるファイルである有効なテンプレート変数です。{user.*variableName*}
を使用するには、variableName がプロンプト ファイルの変数フィールドになければなりません。requestparams: オプション
{ [key: string]: any }
のオブジェクトです。応答ハンドラ: オプション
responseHandler は、応答を処理するために使用されます。デフォルトでは、置換機能が使用されます。ハンドル関数は、事前定義されたシステム関数またはユーザー定義関数のいずれかです。
次の方法で responseHandler を設定できます。
responseHandler: "replace" ;
responseHandler: {
func : 'replace' ,
args : {
textToReplace : 'user.answerModified'
}
}
コマンド テンプレートでは、任意のvariables
項目を使用できます。ユーザー定義の値には「user」という接頭辞が必要です。たとえば、「testFileName」が変数で定義されている場合、それをテンプレート ファイルで「user.TestFileName」として使用したり、関数に渡したりすることができます。
変数値は静的または動的にすることができます。動的な値の場合は、ゲッター メソッドを作成する必要があります。変数ゲッターを呼び出すと、システム変数 (事前定義されたシステム変数を参照) を持つ単一のオブジェクトが最初の引数として渡され、他の変数を次の引数として受け取ることができます。
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*/
}
}
}
]
}
すべての var は大文字と小文字を区別しません。
変数名 | 説明 |
---|---|
システムの選択 | エディターで選択されたテキスト |
システムの質問 | OpenAIの質問 |
システム.アンサー | OpenAIの答え |
システム.言語 | アクティブなファイルのプログラミング言語 |
システム.ベースフォルダー | プロジェクトのベースパス |
システム.ファイルフォルダー | アクティブなファイルの親フォルダーのパス |
システム.ファイル名 | アクティブなファイルの名前 |
システム.ファイルパス | アクティブなファイルのフルパス |
system.fileExtension | アクティブファイルの拡張子 |
system.commitAndTagList | 最新 25 のコミットと関連タグ |
system.readFile | 完全に開いたエディター ファイルを読み取ります。オプションで 2 番目の引数としてファイルパスを渡します |
system.
システム変数のプレフィックスはオプションです。したがって、 {selection}
のみを使用して選択したテキストを使用したり、ファイルの言語として{system.language}
の代わりに{language}
を使用したりすることもできます。
functions
リストに追加します。関数名 | 説明 | パラメータ(デフォルト) |
---|---|---|
追加する | テキストの追加 | textToAppend(system.answer),postion('end') |
交換する | 選択したテキストを置換する | textToReplace(system.answer) |
ファイルの書き込み | テキストをファイルに書き込みます。ファイルが存在する場合は追加します。 | filePath(),content(system.answer) |
交換する
テキストを選択範囲に置き換えます。オプションのパラメータtextToReplace
を取得します。デフォルト値は API の応答と同じです。
デフォルトの使用法
...
commands : [
{
name : "Refactor" ,
template : `Refactor following function.
function:
{system.selection}`
responseHandler : 'replace'
} ,
] ,
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*/`
} ,
] ,
追加
選択範囲にテキストを追加します。オプションのパラメータ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'
}
}
} ,
] ,
名前: 必須
説明: オプション
コマンド: 必須
機能分野 | 機能と実装 | 状態 |
あらゆる AI と対話できる柔軟性 | API を介した複数の AI プロバイダーとの統合。 | 終わり |
パラメーターの選択をサポートし、さまざまな応答構造を処理します。 | 終わり | |
カスタムプロンプトを柔軟に使用できる | 標準構造を介してプロンプトの作成と変更を可能にするプロンプト エンジニアリングのサポート。 | 終わり |
リクエストパラメータの変更を許可する | 終わり | |
AI からの応答をマッサージするためのカスタム応答ハンドラーを追加できるようにします。 | 終わり | |
プロンプトを強化するために使用できる共通の事前定義変数を提供します。 | 終わり | |
静的ゲッターまたは関数ゲッターとなるカスタム変数を使用して、プロンプトをさらに強化します。これにより、プロンプト構造で関数を定義できるようになり、結果がプロンプトに統合されるようになります。システム変数、ユーザー変数、または静的文字列を入力として渡すこともできます | 終わり | |
さまざまなプロンプトを評価し、ELO 評価を割り当て、最も強力なものを選択して保存する機能を提供します。 | 長期 | |
シームレスな UI 統合 | 柔軟な UI、VSCode アクティビティ バーに統合されたチャット インターフェイスを設計します。 | 終わり |
UI は会話の保存、読み込み、エクスポートをサポートする必要があります。 | 終わり | |
UI にストリーミング タイピングを実装し、AI ボットが自らタイピングしているかのような感覚を生み出します。 | 長期 | |
アドホッククエリ/タスク | 開発者が AI にアドホック クエリを送信し、チャット インターフェイスを使用して質問や問題を AI に説明できるように支援します。これは、問題のデバッグ、動作の理解、注意すべき事項のヒントの取得などに使用できます。開発者は、質問にコードまたはファイルを添付できる必要があります。 | 終わり |
事前にクックされた CLI コマンドを定義し、必要に応じて実行する方法を提供します。 CLI コマンドを定義するインターフェイスはプロンプトに似ている必要があります。 | 終わり | |
StackOverflow でクエリを検索する方法を提供します。 | 終わり | |
StackOverflow の回答と対応する AI の回答からクエリの結果を取得する方法を提供します。 | 長期 | |
コード補完とインテリジェンス | コードコメントからコードを生成する方法を提供する | 終わり |
チャット インターフェイスを介してコードを完成、リファクタリング、編集、最適化する方法を提供します。必要に応じてエディターから関連するコードを選択できるようにする必要があります。 | 終わり | |
AI インタラクションを強化するために使用できる、Language Server Protocol (LSP) と統合されたコンテキスト管理システムを実装します。 | 中期 | |
コードのコンテキストを理解してプロンプトに統合するためのコード埋め込みの生成をサポートします。 | 中期 | |
コードの次の行を予測するインテリジェントなコード補完機能を開発します。コンテキスト (LSP または埋め込み) をオートコンプリート プロンプトに統合し、UI でオートコンプリート応答を処理する必要があります。 | 中期 | |
コードレビューとインテリジェンス | チャット インターフェイスを介してレビューする方法を提供します。必要に応じてエディターから関連するコードを選択できるようにする必要があります | 終わり |
Github、Gitlab、またはその他のバージョン プロバイダーからマージ/プル リクエストを取得し、分析してレビュー コメントを提供する機能。ユースケースに応じてレビュー領域と関連する優先順位を指定できる柔軟性を提供する必要があります。 | 中期 | |
自動化されたコードレビューと推奨事項を提供します。コード改善のための微妙な指標を提供し、UI でコード レビュー API 応答を処理する必要があります。 | 長期 | |
自動化されたリファクタリングの提案を提供します。これにより、API 応答のリファクタリングが処理され、UI に提案が表示されます。 | 長期 | |
自動化されたセキュリティに関する提案を提供します。これにより、追加された潜在的な脆弱性、またはコードで使用されているセキュリティのベスト プラクティスからの逸脱を特定できる必要があります。 | 長期 | |
コードドキュメントの支援 | チャット インターフェイスを使用して、選択したコードのドキュメントを生成します。必要に応じてエディターから関連するコードを選択できるようにする必要があります。 | 終わり |
効果的なインライン文書化支援を開発します。コードに基づいてドキュメントを自動的に生成および更新し、UI に表示する必要があります。 | 長期 | |
コードの理解と学習のサポート | チャット インターフェイスを介してコードを説明する方法を提供します。必要に応じてエディターから関連するコードを選択できるようにする必要があります。 | 終わり |
統合ナレッジグラフを開発/統合して、開発者が使用している、または使用したいと考えているサービス、API、メソッド、アルゴリズム、概念の詳細な説明を提供します。 | 長期 | |
グラフ検索をプロンプトに統合する | 長期 | |
テスト | チャット インターフェイスを介して単体テストを生成する方法を提供します。必要に応じてエディターから関連するコードを選択できるようにする必要があります。必要に応じて、新しいファイルまたは現在のファイルにテストを挿入する機能が必要です。 | 終わり |
チャット インターフェイスを介して API および関連するワークフロー テストを生成する方法を提供します。必要に応じて、エディターから関連するコード/API 定義を選択できるようにする必要があります。必要に応じて、新しいファイルまたは現在のファイルにテストを挿入する機能が必要です。 | 短期 |
FlexiGPT は、MIT ライセンスに基づいてライセンス供与された完全なオープンソース ソフトウェアです。
貢献は大歓迎です! GitHub でお気軽にプル リクエストを送信してください。
ご質問や問題がある場合は、GitHub の問題ページで問題を開いてください。