[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

上文介绍了如何在网页使用chatgpt?

ChatGPT-OpenAI注册使用保姆级教程?[开箱可用][免费使用]

V1.介绍下在golang中使用chatgpt?

1.查看官网推荐的chatgpt项目

先看官网推荐的项目
[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

2.访问go-gpt3

go-gpt3
[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

3.使用并运行在自己的项目中…(是因为例子很难理解,所以一一对应了属性做了配置)

3.1安装项目

先是go get github.com/sashabaranov/go-gpt3
参数很多,跟网页版的区别不大…

3.2换上自己的代码

package main

import (
	"context"
	"fmt"

	gogpt "github.com/sashabaranov/go-gpt3"
)

func main() {
	token := "Your Key"
	ask := "Please write a article About how to live in the china?"
	example(token, ask)
}

func example(token string, prompt string) {
	c := gogpt.NewClient(token)
	ctx := context.Background()

	req := gogpt.CompletionRequest{
		Model:            gogpt.GPT3TextDavinci001,
		Temperature:      0.4,
		MaxTokens:        1000,
		TopP:             1,
		FrequencyPenalty: 0,
		PresencePenalty:  0,
		BestOf:           1,
		Prompt:           prompt,
	}
	resp, err := c.CreateCompletion(ctx, req)
	if err != nil {
		return
	}
	fmt.Println(resp.Choices[0].Text)
}

3.3换上自己的key

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

4.运行结果如图…

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

5.对照网页版运行结果…

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

V2.已集成Gin/Html做成网页版本…

main.go

package main

import (
	"embed"
	"github.com/gin-gonic/gin"
	"html/template"
	"io/ioutil"
	"net/http"
	"strings"
)

//go:embed static/* templates/*
var f embed.FS

func main() {
	router := gin.Default()

	// asset加载html
	templates, err := loadTemplate()
	if err != nil {
		panic(err)
	}
	// 配置模板
	router.SetHTMLTemplate(templates)
	// 配置静态文件夹路径 第一个参数是api,第二个是文件夹路径
	router.StaticFS("/static/", http.FS(f))

	rootGroup := router.Group("/")
	{
		rootGroup.GET("/", Index)
		rootGroup.GET("/index", Index)
		rootGroup.GET("/test/", Test)
		rootGroup.POST("/chatgpt", ChatGPT)
	}
	router.Run(":9090")
}

// 执行命令: go-assets-builder templates -o assets.go -p main
func loadTemplate() (*template.Template, error) {
	t := template.New("")
	for name, file := range Assets.Files {
		// 可以用.tmpl .html
		if file.IsDir() || !strings.HasSuffix(name, ".html") {
			continue
		}
		h, err := ioutil.ReadAll(file)
		if err != nil {
			return nil, err
		}
		t, err = t.New(name).Parse(string(h))
		if err != nil {
			return nil, err
		}
	}
	return t, nil
}

[Golang实战]如何快速接入chatgpt/openai?[引入go-gpt3][新手开箱可用]

完整代码

Github-chatgpt-demo

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年3月22日 下午10:54
下一篇 2023年3月22日 下午10:56

相关推荐