本库为文心千帆GO语言SDK,非官方库,目前官方还没有GO语言的SDK 文心千帆 目前支持:
- ERNIE-Bot
- ERNIE-Bot-turbo
- BLOOMZ-7B
- Llama-2
- Embeddings
go get github.com/fbbyqsyea/go-ernie
需要 go 版本为 1.18+
package main
import (
"context"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
completion, err := client.CreateErnieBotChatCompletion(context.Background(), ernie.ErnieBotRequest{
Messages: []ernie.ChatCompletionMessage{
{
Role: ernie.MessageRoleUser,
Content: "你好呀",
},
},
})
if err != nil {
fmt.Printf("ernie bot error: %v\n", err)
return
}
fmt.Println(completion)
}
- 在百度云官网进行申请:https://cloud.baidu.com/product/wenxinworkshop
- 申请通过后创建应用:https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application
- 获取 apikey 和 api secret
ERNIE-Bot stream流 对话
import (
"context"
"errors"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
"io"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
request := ernie.ErnieBotRequest{
Messages: []ChatCompletionMessage{
{
Role: "user",
Content: "Hello",
},
},
Stream: true,
}
stream, err := client.CreateErnieBotChatCompletionStream(context.Background(), request)
if err != nil {
fmt.Printf("ernie bot stream error: %v\n", err)
return
}
defer stream.Close()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
fmt.Println("ernie bot Stream finished")
return
}
if err != nil {
fmt.Printf("ernie bot stream error: %v\n", err)
return
}
fmt.Println(response.Result)
}
}
ERNIE-Bot-Turbo 对话
package main
import (
"context"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
completion, err := client.CreateErnieBotTurboChatCompletion(context.Background(), ernie.ErnieBotTurboRequest{
Messages: []ernie.ChatCompletionMessage{
{
Role: ernie.MessageRoleUser,
Content: "你好呀",
},
},
})
if err != nil {
fmt.Printf("ernie bot turbo error: %v\n", err)
return
}
fmt.Println(completion)
}
ERNIE-Bot Turbo stream流 对话
import (
"context"
"errors"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
"io"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
request := ernie.ErnieBotTurboRequest{
Messages: []ChatCompletionMessage{
{
Role: "user",
Content: "Hello",
},
},
Stream: true,
}
stream, err := client.CreateErnieBotTurboChatCompletionStream(context.Background(), request)
if err != nil {
fmt.Printf("ernie bot stream error: %v\n", err)
return
}
defer stream.Close()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
fmt.Println("ernie bot turbo Stream finished")
return
}
if err != nil {
fmt.Printf("ernie bot turbo stream error: %v\n", err)
return
}
fmt.Println(response.Result)
}
}
BLOOMZ-7B 对话
package main
import (
"context"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
completion, err := client.CreateBloomz7b1ChatCompletion(context.Background(), ernie.Bloomz7b1Request{
Messages: []ernie.ChatCompletionMessage{
{
Role: ernie.MessageRoleUser,
Content: "你好呀",
},
},
})
if err != nil {
fmt.Printf("BLOOMZ-7B error: %v\n", err)
return
}
fmt.Println(completion)
}
BLOOMZ-7B stream流 对话
import (
"context"
"errors"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
"io"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
request := ernie.Bloomz7b1Request{
Messages: []ChatCompletionMessage{
{
Role: "user",
Content: "Hello",
},
},
Stream: true,
}
stream, err := client.CreateBloomz7b1ChatCompletionStream(context.Background(), request)
if err != nil {
fmt.Printf("BLOOMZ-7B error: %v\n", err)
return
}
defer stream.Close()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
fmt.Println("BLOOMZ-7B Stream finished")
return
}
if err != nil {
fmt.Printf("BLOOMZ-7B stream error: %v\n", err)
return
}
fmt.Println(response.Result)
}
}
Llama2 对话
package main
import (
"context"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
completion, err := client.CreateLlamaChatCompletion(context.Background(), ernie.LlamaChatRequest{
Messages: []ernie.ChatCompletionMessage{
{
Role: ernie.MessageRoleUser,
Content: "你好呀",
},
},
Model: "", //申请发布时填写的API名称
})
if err != nil {
fmt.Printf("llama2 error: %v\n", err)
return
}
fmt.Println(completion)
}
Llama2 stream流 对话
import (
"context"
"errors"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
"io"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
request := ernie.LlamaChatRequest{
Messages: []ChatCompletionMessage{
{
Role: "user",
Content: "Hello",
},
},
Stream: true,
Model: "", //申请发布时填写的API名称
}
stream, err := client.CreateLlamaChatCompletionStream(context.Background(), request)
if err != nil {
fmt.Printf("llama2 error: %v\n", err)
return
}
defer stream.Close()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
fmt.Println("llama2 Stream finished")
return
}
if err != nil {
fmt.Printf("llama2 stream error: %v\n", err)
return
}
fmt.Println(response.Result)
}
}
Embedding向量
package main
import (
"context"
"fmt"
ernie "github.com/fbbyqsyea/go-ernie"
)
func main() {
client := ernie.NewDefaultClient("API Key", "Secret Key")
request := ernie.EmbeddingRequest{
Input: []string{
"Hello",
},
}
embeddings, err := client.CreateEmbeddings(context.Background(), request)
if err != nil {
fmt.Sprintf("embeddings err: %v", err)
return
}
fmt.Println(embeddings)
}
自定义 accessToken
client :=ernie.NewClient("accessToken")