EdgeGPT-Go 项目使用教程
1. 项目的目录结构及介绍
EdgeGPT-Go 项目的目录结构如下:
EdgeGPT-Go/
├── README.md
├── LICENSE.md
├── go.mod
├── go.sum
├── main.go
├── chat-bot/
│ ├── chat-bot.go
│ └── ...
├── cli/
│ ├── cli.go
│ └── ...
├── common/
│ ├── common.go
│ └── ...
├── config/
│ ├── config.go
│ └── ...
├── services/
│ ├── services.go
│ └── ...
└── terminal/
├── terminal.go
└── ...
目录结构介绍
README.md
和LICENSE.md
:项目的说明文档和许可证文件。go.mod
和go.sum
:Go 模块文件,用于管理项目的依赖。main.go
:项目的入口文件。chat-bot/
:包含与聊天机器人相关的代码。cli/
:包含命令行接口相关的代码。common/
:包含通用功能和工具代码。config/
:包含配置文件和配置管理代码。services/
:包含服务相关的代码。terminal/
:包含终端交互相关的代码。
2. 项目的启动文件介绍
项目的启动文件是 main.go
,它是整个项目的入口点。以下是 main.go
的主要内容:
package main
import (
"log"
"github.com/pavel-one/EdgeGPT-Go"
)
func main() {
s := EdgeGPT.NewStorage()
gpt, err := s.GetOrSet("any-key")
if err != nil {
log.Fatalln(err)
}
// 发送异步请求
mw, err := gpt.AskAsync("Hi, you're alive!")
if err != nil {
log.Fatalln(err)
}
go mw.Worker()
// 处理响应
for range mw.Chan {
log.Println(mw.Answer.GetAnswer())
log.Println(mw.Answer.GetType())
log.Println(mw.Answer.GetSuggestions())
log.Println(mw.Answer.GetMaxUnit())
log.Println(mw.Answer.GetUserUnit())
}
// 发送同步请求
as, err := gpt.AskSync("Show an example of sockets in golang gorilla")
if err != nil {
log.Fatalln(err)
}
log.Println(as.Answer.GetAnswer())
}
启动文件介绍
main
函数是程序的入口点。- 首先创建了一个存储实例
s
,并从中获取或设置一个 GPT 实例gpt
。 - 发送一个异步请求并启动一个工作线程来处理响应。
- 处理异步请求的响应并打印相关信息。
- 发送一个同步请求并打印响应。
3. 项目的配置文件介绍
项目的配置文件位于 config/
目录下,主要文件是 config.go
。以下是 config.go
的主要内容:
package config
import (
"os"
"log"
)
type Config struct {
CONVERSATION_ENDPOINT string
COOKIES_PATH string
PORT string
}
func LoadConfig() *Config {
return &Config{
CONVERSATION_ENDPOINT: os.Getenv("CONVERSATION_ENDPOINT"),
COOKIES_PATH: os.Getenv("COOKIES_PATH"),
PORT: os.Getenv("PORT"),
}
}
func (c *Config) Validate() {
if c.CONVERSATION_ENDPOINT == "" {
log.Fatal("CONVERSATION_ENDPOINT is not set")
}
if c.COOKIES_PATH == "" {
log.Fatal("COOKIES_PATH is not set")
}
if c.PORT == "" {
log.Fatal("PORT is not set")
}
}