AURORA扩展插件:自定义插件开发教程

AURORA扩展插件:自定义插件开发教程

【免费下载链接】aurora free 【免费下载链接】aurora 项目地址: https://gitcode.com/GitHub_Trending/aur/aurora

AURORA是一款免费的GPT3.5应用,支持通过access调用,提供Web界面和API接口。本文将详细介绍如何为AURORA开发自定义插件,扩展其功能以满足特定需求。

插件开发环境准备

在开始开发AURORA插件前,需要准备以下环境和工具:

  1. Go开发环境:AURORA使用Go语言开发,需要安装Go 1.16+环境
  2. 代码编辑器:推荐使用VS Code或GoLand
  3. 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语言的包和接口实现,主要通过以下几个部分扩展功能:

  1. API路由扩展:添加新的API端点
  2. 中间件:添加请求处理逻辑
  3. 请求/响应处理:自定义GPT请求和响应处理

API路由扩展

AURORA使用Gin框架处理HTTP请求,API路由定义在api/router.go中。要添加新的API端点,需要创建新的路由处理函数。

Web界面

以下是API路由定义文件:

api/router.go

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中集成自定义请求处理器:

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

插件打包与分发

开发完成的插件可以通过以下方式分发:

  1. 源码分发:将插件代码提交到代码仓库,用户通过编译时包含
  2. 环境变量配置:通过环境变量启用和配置插件
  3. 配置文件:添加专门的插件配置文件

高级插件开发

中间件开发

可以开发自定义中间件来处理请求,例如添加请求日志、修改请求参数等。中间件定义在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中添加自定义工具函数:

util/util.go

// 计算字符串相似度
func StringSimilarity(a, b string) float64 {
	// 实现字符串相似度算法
	// ...
}

总结

AURORA插件开发主要通过扩展API路由、中间件和请求/响应处理来实现。本文介绍了基础插件开发流程,包括环境准备、API扩展、中间件开发和请求处理修改。通过这些方法,可以为AURORA添加各种自定义功能,满足特定需求。

开发完成后,记得更新项目文档,说明插件的使用方法和配置选项,方便其他用户使用你的插件。

更多开发细节可以参考项目源码和类型定义文件:

【免费下载链接】aurora free 【免费下载链接】aurora 项目地址: https://gitcode.com/GitHub_Trending/aur/aurora

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值