作为高级用户与 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 的问题页面上打开问题。