第49节 在 Sealos 上开发一款 AI 自动云原生化项目自动上线工具


❤️💕💕记录sealosopen in new window开源项目的学习过程。k8s,docker和云原生的学习open in new window。Myblog:http://nsddd.topopen in new window


[TOC]

介绍

技术领域:

熟悉 golang、Docker、kubernetes 等技术,了解 chatGPT、autoGPT 等AI技术的使用

开源协议:

  • apache-2

项目简述:

项目背景:

不论懂不懂云原生,写 Dockerfile 以及 yaml 文件都是一件非常痛苦的事,如果 AI 能自动帮我们解决这个问题将会价值巨大。

项目描述:

输入一个任意的 github 仓库地址,通过 AI 能力自动为其生成 Dockerfile 和 kubernetes 编排配置文件,并自动在 sealos 上运行。

AI 生成的不一定第一次就能生成非常准确的配置,首先需要可以把自动构建的错误信息返回给 AI 并让 AI 自动修复,也需要人给 AI 一些反馈信息把没有期望发生的现象反馈给 AI 让 AI 来调整。

最终把生成的内容 PR 回仓库,后续就可以实现完全自动化上线了。

产出要求

  1. 源代码,技术文档,线上服务以及测试报告
  2. 提供能力的源码与文档并合并到主仓库
  3. 功能可以正常在 sealos 上线并运行
  4. 提供测试报告

什么是 Auto-GPT

go-gpt3

go-gpt3 是一个 OpenAI GPT-3 API 客户端,使 Go/Golang 程序能够与 gpt3 API 进行交互。

支持使用带或不带流式处理的完成 API。

user

调用主 gpt-3 API 的简单用法,完成:

client := gpt3.NewClient(apiKey)
resp, err := client.Completion(ctx, gpt3.CompletionRequest{
    Prompt: []string{"2, 3, 5, 7, 11,"},
})

fmt.Print(resp.Choices[0].Text)
// prints " 13, 17, 19, 23, 29, 31", etc

Documentation

尝试这些示例中的任何一种,将内容放入 main.go 并运行 go run main.go 。我建议使用 go 模块,在这种情况下,您还需要在测试存储库中运行 go mod init 。或者,您可以克隆此存储库并使用 go run cmd/test/main.go 运行测试脚本。

但是我们知道,我们如果希望运行 chatgpt ,我们期望有一个 API

这是和 AutoGPT 一样的:

如下所示的 .env 文件才能使用这些示例:

API_KEY=<openAI API Key>

💡简单的一个案例如下:

package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/PullRequestInc/go-gpt3"
	"github.com/joho/godotenv"
)

func main() {
	godotenv.Load()

	apiKey := os.Getenv("API_KEY")
	if apiKey == "" {
		log.Fatalln("Missing API KEY")
	}

	ctx := context.Background()
	client := gpt3.NewClient(apiKey)

	resp, err := client.Completion(ctx, gpt3.CompletionRequest{
		Prompt:    []string{"The first thing you should know about javascript is"},
		MaxTokens: gpt3.IntPtr(30),
		Stop:      []string{"."},
		Echo:      true,
	})
	if err != nil {
		log.Fatalln(err)
	}
	fmt.Println(resp.Choices[0].Text)
}

通过 os.Getenv 获取到环境变量的值,其中的环境变量使用的是 API_KEY 来进行设置

export API_KEY="**********************************"
I want Auto-GPT to: 根据https://github.com/go-gitea/gitea的GitHub仓库地址,生成可以供 Kubernetes 使用的 yaml 文件或者是 dockerfile 使用的 dockerfile 文件,生成yaml文件保存本地后退出
GitOpsGPT  has been created with the following details:
Name:  GitOpsGPT
Role:  an AI agent that automates the process of generating Kubernetes yaml files or Dockerfiles from a given GitHub repository URL, and saves the generated files locally.
Goals: 
-  Analyze the repository and identify the appropriate language and framework used to generate the Dockerfile or Kubernetes yaml files.
-  Generate the Dockerfile or Kubernetes yaml files based on the identified language and framework, and ensure that they are compatible with the latest version of Kubernetes.
-  Optimize the generated files for performance, security, and scalability, and ensure that they adhere to best practices and industry standards.
-  Save the generated files to a specified location on the local machine and provide a confirmation message upon completion.
-  Continuously monitor the repository for any changes and update the generated files accordingly to ensure that they remain up-to-date and compatible with the latest version of Kubernetes.

链接

END 链接