AURORA扩展插件:自定义插件开发教程
【免费下载链接】aurora free 项目地址: https://gitcode.com/GitHub_Trending/aur/aurora
AURORA是一款免费的GPT3.5应用,支持通过access调用,提供Web界面和API接口。本文将详细介绍如何为AURORA开发自定义插件,扩展其功能以满足特定需求。
插件开发环境准备
在开始开发AURORA插件前,需要准备以下环境和工具:
- Go开发环境:AURORA使用Go语言开发,需要安装Go 1.16+环境
- 代码编辑器:推荐使用VS Code或GoLand
- Git:用于版本控制和获取源码
获取AURORA源码
首先,克隆AURORA项目仓库:
git clone https://gitcode.com/GitHub_Trending/aur/aurora
cd aurora
项目结构概览:
aurora/
├── api/ # API路由定义
├── conversion/ # 请求/响应转换
├── httpclient/ # HTTP客户端实现
├── initialize/ # 初始化相关
├── internal/ # 内部功能实现
├── middlewares/ # HTTP中间件
├── typings/ # 类型定义
├── util/ # 工具函数
└── web/ # Web界面
插件开发基础
AURORA插件系统基于Go语言的包和接口实现,主要通过以下几个部分扩展功能:
- API路由扩展:添加新的API端点
- 中间件:添加请求处理逻辑
- 请求/响应处理:自定义GPT请求和响应处理
API路由扩展
AURORA使用Gin框架处理HTTP请求,API路由定义在api/router.go中。要添加新的API端点,需要创建新的路由处理函数。
以下是API路由定义文件:
package api
import (
"aurora/initialize"
"github.com/gin-gonic/gin"
"net/http"
)
var router *gin.Engine
func init() {
// 初始化gin
router = initialize.RegisterRouter()
}
func Listen(w http.ResponseWriter, r *http.Request) {
router.ServeHTTP(w, r)
}
创建自定义中间件
中间件可以在请求处理前后添加自定义逻辑,如认证、日志记录等。AURORA的中间件位于middlewares/目录。
middlewares/auth.go展示了认证中间件的实现:
package middlewares
import (
"github.com/gin-gonic/gin"
"os"
"strings"
)
func Authorization(c *gin.Context) {
customer_key := os.Getenv("Authorization")
if customer_key != "" {
authHeader := c.GetHeader("Authorization")
if authHeader == "" {
c.JSON(401, gin.H{"error": "Unauthorized"})
c.Abort()
return
}
tokenParts := strings.Split(strings.Replace(authHeader, "Bearer ", "", 1)," ")
customAccessToken := tokenParts[0]
if customer_key != customAccessToken {
c.JSON(401, gin.H{"error": "Unauthorized"})
c.Abort()
return
}
if len(tokenParts) > 1 {
openaiAccessToken := tokenParts[1]
c.Request.Header.Set("Authorization", "Bearer " + openaiAccessToken)
}
}
c.Next()
}
插件开发实例:自定义请求处理
以下实例将创建一个自定义插件,修改GPT请求参数,添加自定义系统提示。
1. 创建请求处理包
在internal/目录下创建custom/目录,用于存放自定义插件代码:
mkdir -p internal/custom
创建internal/custom/request.go文件,实现自定义请求处理逻辑:
package custom
import (
"aurora/internal/chatgpt"
"aurora/typings/chatgpt"
)
// CustomRequestProcessor 自定义请求处理器
type CustomRequestProcessor struct {
// 可以添加配置参数
SystemPrompt string
}
// NewCustomRequestProcessor 创建新的请求处理器
func NewCustomRequestProcessor(systemPrompt string) *CustomRequestProcessor {
return &CustomRequestProcessor{
SystemPrompt: systemPrompt,
}
}
// Process 修改GPT请求
func (p *CustomRequestProcessor) Process(req *chatgpt.ChatGPTRequest) {
// 添加系统提示
if p.SystemPrompt != "" {
// 在用户消息前插入系统提示
systemMsg := chatgpt.ChatMessage{
Role: "system",
Content: p.SystemPrompt,
}
// 创建新的消息切片,容量+1
newMessages := make([]chatgpt.ChatMessage, 0, len(req.Messages)+1)
newMessages = append(newMessages, systemMsg)
newMessages = append(newMessages, req.Messages...)
req.Messages = newMessages
}
}
2. 修改请求处理逻辑
在internal/chatgpt/request.go中集成自定义请求处理器:
需要导入自定义处理器并在创建请求后应用它:
// 添加导入
import (
"aurora/internal/custom"
)
// 在创建请求的函数中添加
func NewChatGPTRequest() ChatGPTRequest {
disable_history := os.Getenv("ENABLE_HISTORY") != "true"
// 创建基本请求
req := ChatGPTRequest{
Action: "next",
ParentMessageID: uuid.NewString(),
Model: "text-davinci-002-render-sha",
HistoryAndTrainingDisabled: disable_history,
ForceUseSse: true,
TimezoneOffsetMin: -480,
}
// 应用自定义处理器
customProcessor := custom.NewCustomRequestProcessor(os.Getenv("CUSTOM_SYSTEM_PROMPT"))
customProcessor.Process(&req)
return req
}
3. 添加环境变量配置
在.env.template中添加自定义配置:
# 自定义系统提示
CUSTOM_SYSTEM_PROMPT=
4. 编译和测试
使用以下命令编译AURORA:
go build -o aurora
设置自定义系统提示环境变量并运行:
export CUSTOM_SYSTEM_PROMPT="你是一个专业的技术文档编写助手,回答要简洁明了。"
./aurora
访问Web界面测试自定义功能:http://服务器IP:8080/web
插件打包与分发
开发完成的插件可以通过以下方式分发:
- 源码分发:将插件代码提交到代码仓库,用户通过编译时包含
- 环境变量配置:通过环境变量启用和配置插件
- 配置文件:添加专门的插件配置文件
高级插件开发
中间件开发
可以开发自定义中间件来处理请求,例如添加请求日志、修改请求参数等。中间件定义在middlewares/目录下。
// middlewares/custom_log.go
package middlewares
import (
"github.com/gin-gonic/gin"
"log"
"time"
)
// CustomLogMiddleware 自定义日志中间件
func CustomLogMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// 请求前
startTime := time.Now()
// 处理请求
c.Next()
// 请求后
endTime := time.Now()
latency := endTime.Sub(startTime)
method := c.Request.Method
path := c.Request.URL.Path
statusCode := c.Writer.Status()
log.Printf("method=%s path=%s status=%d latency=%v", method, path, statusCode, latency)
}
}
然后在initialize/router.go中注册中间件:
// 添加自定义日志中间件
router.Use(middlewares.CustomLogMiddleware())
工具函数扩展
可以在util/util.go中添加自定义工具函数:
// 计算字符串相似度
func StringSimilarity(a, b string) float64 {
// 实现字符串相似度算法
// ...
}
总结
AURORA插件开发主要通过扩展API路由、中间件和请求/响应处理来实现。本文介绍了基础插件开发流程,包括环境准备、API扩展、中间件开发和请求处理修改。通过这些方法,可以为AURORA添加各种自定义功能,满足特定需求。
开发完成后,记得更新项目文档,说明插件的使用方法和配置选项,方便其他用户使用你的插件。
更多开发细节可以参考项目源码和类型定义文件:
【免费下载链接】aurora free 项目地址: https://gitcode.com/GitHub_Trending/aur/aurora
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



