파워 유저로서 GPT AI 모델과 상호 작용합니다.
여러 AI 제공업체 지원
풍부한 프롬프트 엔지니어링 지원
유연한 UI
편집기 내에서 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월 현재 베타 버전인 무료 모델은 코덱스( 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 키가 필요합니다. 여기 허깅페이스 웹사이트에서 얻을 수 있습니다.
지원되는 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
/완료지원되는 모델 - 위 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}
사용할 수도 있습니다.프롬프트에서 responseHandler를 통해 사후 처리 응답을 지원합니다. 내장된 사전 정의된 여러 responseHandler를 사용할 수 있습니다. 사용자 정의 responseHandler도 지원합니다. 예는 여기에서 찾을 수 있습니다.
GPT3.5/4 모델의 함수 호출 기능도 지원됩니다. 이 프롬프트 파일에서 예를 찾을 수 있습니다.
입력 텍스트 상자를 클릭하면 FlexiGPT 자체에서 제공하는 기본 프롬프트, flexigpt.promptFiles
에 정의된 모든 프롬프트, 구성에 정의된 대로 flexigpt.inBuiltPrompts
를 사용하여 활성화된 모든 내장 프롬프트가 로드되어야 합니다. (텍스트 상자를 처음 클릭해도 미리 구성된 일부 프롬프트가 로드되지 않으면 옵션을 이스케이프 처리하고 다시 클릭해 보세요. VSCode가 파일에서 동적 목록을 로드하는 데 시간이 걸릴 수 있습니다.)
미리 구성된 프롬프트를 선택하면 정의된 시스템/사용자 변수를 대체한 후 프롬프트 명령에 정의된 질문 템플릿이 사용됩니다. 다른 명령 옵션도 정의 자체에서 가져옵니다.
텍스트 상자에 자유 부동 질문을 입력하면 텍스트 자체가 프롬프트로 직접 사용됩니다. 사전 정의된 시스템 변수를 사용하여 자유 부동 질문을 향상시킬 수도 있습니다.
{selection}
사용하세요.{readfile}
사용하세요. FlexiGPT 기본 프롬프트(기본값: 활성화됨)
기본 프롬프트 이동(기본값: 비활성화, 구성에서 활성화)
Go sqlx + 다람쥐 프롬프트(기본값: 비활성화, 구성에서 활성화)
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를 설정할 수 있습니다.
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 답변 |
시스템.언어 | 활성 파일의 프로그래밍 언어 |
system.base폴더 | 프로젝트 기본 경로 |
system.file폴더 | 활성 파일의 상위 폴더 경로 |
시스템.파일이름 | 활성 파일 이름 |
시스템.파일 경로 | 활성 파일의 전체 경로 |
system.file확장자 | 활성 파일의 확장자 |
system.commitAndTagList | 최근 25개 커밋 및 관련 태그 |
시스템.읽기파일 | 전체 열린 편집기 파일을 읽습니다. 선택적으로 파일 경로를 두 번째 인수로 전달합니다. |
system.
시스템 변수의 접두사는 선택 사항입니다. 따라서 선택한 텍스트를 사용하려면 {selection}
만 사용하거나 파일 언어로 {system.language}
대신 {language}
사용할 수도 있습니다.
functions
목록에 추가합니다.기능 이름 | 설명 | 매개변수(기본값) |
---|---|---|
추가 | 텍스트 추가 | textToAppend(system.answer),postion('end') |
바꾸다 | 선택한 텍스트 바꾸기 | textToReplace(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'
}
}
} ,
] ,
이름: 필수
설명: 선택사항
명령: 필수
기능 영역 | 기능 및 구현 | 상태 |
어떤 AI와도 대화할 수 있는 유연성 | API를 통해 여러 AI 제공업체와 통합됩니다. | 완료 |
매개변수 선택을 지원하고 다양한 응답 구조를 처리합니다. | 완료 | |
사용자 정의 프롬프트를 사용할 수 있는 유연성 | 표준 구조를 통해 프롬프트를 생성하고 수정할 수 있는 프롬프트 엔지니어링을 지원합니다. | 완료 |
요청 매개변수 수정 허용 | 완료 | |
AI의 응답을 처리하기 위해 사용자 정의 응답 핸들러를 추가할 수 있습니다. | 완료 | |
프롬프트를 향상시키는 데 사용할 수 있는 사전 정의된 공통 변수 제공 | 완료 | |
정적 또는 함수 getter가 될 수 있는 사용자 정의 변수를 사용하여 추가 프롬프트 개선 사항을 제공합니다. 이를 통해 프롬프트 구조에서 기능 정의를 허용하고 결과를 프롬프트에 통합해야 합니다. 또한 시스템 변수, 사용자 변수 또는 정적 문자열을 입력으로 전달할 수 있습니다. | 완료 | |
다양한 프롬프트를 평가하고, ELO 등급을 할당하고, 가장 강력한 메시지를 선택 및 저장하는 기능을 제공합니다. | 장기 | |
원활한 UI 통합 | VSCode 활동 표시줄에 통합된 채팅 인터페이스인 유연한 UI를 디자인하세요. | 완료 |
UI는 대화 저장, 로드 및 내보내기를 지원해야 합니다. | 완료 | |
UI에 스트리밍 타이핑을 구현하여 AI 봇이 스스로 타이핑하는 듯한 느낌을 줍니다. | 장기 | |
임시 쿼리/작업 | 개발자가 채팅 인터페이스를 사용하여 AI에 대한 질문이나 문제를 설명할 수 있는 임시 쿼리를 AI에 요청할 수 있도록 도와주세요. 이는 문제 디버깅, 동작 이해, 주의할 사항에 대한 힌트 얻기 등에 사용될 수 있습니다. 개발자는 질문에 코드나 파일을 첨부할 수 있어야 합니다. | 완료 |
미리 조리된 CLI 명령을 정의하고 필요에 따라 실행하는 방법을 제공합니다. CLI 명령을 정의하는 인터페이스는 프롬프트와 유사해야 합니다. | 완료 | |
StackOverflow에서 쿼리를 검색하는 방법을 제공합니다. | 완료 | |
StackOverflow 답변 및 해당 AI 답변에서 쿼리 결과를 얻을 수 있는 방법을 제공합니다. | 장기 | |
코드 완성 및 인텔리전스 | 코드 주석에서 코드를 생성하는 방법 제공 | 완료 |
채팅 인터페이스를 통해 코드를 완성, 리팩터링, 편집 또는 최적화하는 방법을 제공합니다. 필요에 따라 편집기에서 관련 코드를 선택할 수 있어야 합니다. | 완료 | |
AI 상호 작용을 강화하는 데 사용할 수 있는 LSP(Language Server Protocol)와 통합된 컨텍스트 관리 시스템을 구현합니다. | 중기 | |
코드 컨텍스트를 이해하고 이를 프롬프트에 통합하기 위해 코드 임베딩 생성을 지원합니다. | 중기 | |
다음 코드 줄을 예측하는 지능형 코드 완성 기능을 개발합니다. 컨텍스트(LSP 또는 임베딩)를 자동 완성 프롬프트에 통합하고 UI에서 자동 완성 응답을 처리해야 합니다. | 중기 | |
코드 검토 및 인텔리전스 | 채팅 인터페이스를 통해 검토할 수 있는 방법을 제공합니다. 필요에 따라 편집기에서 관련 코드를 선택할 수 있어야 합니다. | 완료 |
Github, Gitlab 또는 기타 버전 제공업체로부터 병합/풀 요청을 가져와 분석하고 검토 의견을 제공하는 기능. 사용 사례에 따라 검토 영역 및 관련 우선순위를 지정할 수 있는 유연성을 제공해야 합니다. | 중기 | |
자동화된 코드 검토 및 권장 사항을 제공합니다. 코드 개선을 위한 미묘한 지표를 제공하고 UI에서 코드 검토 API 응답을 처리해야 합니다. | 장기 | |
자동화된 리팩토링 제안을 제공합니다. 이는 리팩터링 API 응답을 처리하고 UI에 제안을 표시해야 합니다. | 장기 | |
자동화된 보안 제안을 제공합니다. 이를 통해 추가되는 잠재적인 취약점이나 코드에 사용되는 보안 모범 사례의 편차를 식별할 수 있어야 합니다. | 장기 | |
코드 문서 지원 | 채팅 인터페이스를 사용하여 선택한 코드에 대한 문서를 생성합니다. 필요에 따라 편집기에서 관련 코드를 선택할 수 있어야 합니다. | 완료 |
효과적인 인라인 문서 지원을 개발합니다. 코드를 기반으로 문서를 자동으로 생성 및 업데이트하고 이를 UI에 표시해야 합니다. | 장기 | |
코드 이해 및 학습 지원 | 채팅 인터페이스를 통해 코드를 설명하는 방법을 제공합니다. 필요에 따라 편집기에서 관련 코드를 선택할 수 있어야 합니다. | 완료 |
개발자가 사용 중이거나 사용하려는 서비스, API, 방법, 알고리즘 및 개념에 대한 자세한 설명을 제공하기 위해 통합 지식 그래프로 개발/통합합니다. | 장기 | |
그래프 검색을 프롬프트에 통합 | 장기 | |
테스트 | 채팅 인터페이스를 통해 단위 테스트를 생성하는 방법을 제공합니다. 필요에 따라 편집기에서 관련 코드를 선택할 수 있어야 합니다. 필요에 따라 새 파일이나 현재 파일에 테스트를 삽입할 수 있는 기능이 있어야 합니다. | 완료 |
채팅 인터페이스를 통해 API 및 관련 워크플로 테스트를 생성하는 방법을 제공합니다. 필요에 따라 편집기에서 관련 코드/API 정의를 선택할 수 있어야 합니다. 필요에 따라 새 파일이나 현재 파일에 테스트를 삽입할 수 있는 기능이 있어야 합니다. | 단기 |
FlexiGPT는 MIT 라이선스에 따라 라이선스가 부여된 완전 오픈 소스 소프트웨어입니다.
기여를 환영합니다! GitHub에 풀 요청을 제출해 주세요.
질문이나 문제가 있는 경우 GitHub의 문제 페이지에서 문제를 열어주세요.