目錄
- 1,關于goframe
- 2,使用goframe客戶的方法
- 3,總結
1,關于goframe
最近在使用goframe的架構,發現內建了很多新的方法,特别的好用。
元件也是十分的豐富了。
開源項目位址:
項目位址:https://goframe.org/
GoFrame是一款子產品化、低耦合設計的開發架構,包含了常用的基礎元件和開發工具,既可以作為完整的業務項目架構使用也可以作為獨立的元件庫使用。我們為大家提供的快速開始章節,主要以完整的業務項目介紹架構的基本入門和使用。關于獨立元件庫使用,可以檢視獨立的元件章節介紹。
https://blog.csdn.net/freewebsys/article/details/129698017
2,使用goframe客戶的方法
接口文檔:
https://goframe.org/pages/viewpage.action?pageId=59864757
使用類型轉換:
https://goframe.org/pages/viewpage.action?pageId=17203726
c := g.Client()
就可以通路了,使用的是流式處理方法。
可以直接獲得結果的内容。
// 傳回content為string類型
content := g.Client().GetContent(ctx, “https://goframe.org”)
以Bytes及Content字尾結尾的請求方法為直接擷取傳回内容的快捷方法,這些方法将會自動讀取服務端傳回内容并自動關閉請求連接配接。*Bytes方法用于擷取[]byte類型結果,*Content方法用于擷取string類型結果。需要注意的是,如果請求執行失敗,傳回内容将會為空。
其實很多看着很重複的工作需要封裝下,就像。
直接傳回字元串即可。
調用chatgpt 代碼就變得非常簡單了:
package main
import (
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/util/gconv"
)
// 接口文檔:
// https://goframe.org/pages/viewpage.action?pageId=59864757
// 使用類型轉換:
// https://goframe.org/pages/viewpage.action?pageId=17203726
type ChatChoiceMsg struct {
Role string `json:"role"`
Content string `json:"content"`
}
type ChatChoice struct {
Message ChatChoiceMsg `json:"message"`
}
type ChatRes struct {
Id string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
Choices []ChatChoice `json:"choices"`
}
var ApiKey string = "xxxx"
func main() {
c := g.Client()
c.SetHeader("Accept", "text/event-stream")
c.SetHeader("Content-Type", "application/json")
c.SetHeader("Authorization", "Bearer " + ApiKey)
question := "介紹大衆汽車"
params := `{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "` + question + `"}]
}`
fmt.Println(params)
// /v1/chat/completions
url := "https://api.openai.com/v1/chat/completions"
// 發送資料
out := c.ContentJson().PostContent(gctx.New(), url, params)
fmt.Println(out)
var chatRes ChatRes
if err := gconv.Structs(out, &chatRes); err == nil {
fmt.Println(chatRes)
if len(chatRes.Choices) > 0 {
fmt.Println(chatRes.Choices[0].Message.Content)
}
}else{
panic(err)
}
}
同時還将結果反序列化了。gconv.Structs 方法可以把json 轉換成對象。
然後直接使用對象的屬性就可以了。代碼還是非常的少的。
3,總結
goframe裡面有很多非常實用的工具類,可以非常友善的解決開發中遇到的問題。
類似spring 庫和 apache 庫,都喲非常豐富的基礎類,同時文檔非常強大。
可以直接使用即可。