go_ernie

package module
v0.0.0-...-072a525 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2023 License: Apache-2.0 Imports: 11 Imported by: 0

README

文心千帆 GO SDK

Go Reference

本库为文心千帆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)
}
获取文心千帆 APIKEY
  1. 在百度云官网进行申请:https://cloud.baidu.com/product/wenxinworkshop
  2. 申请通过后创建应用:https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application
  3. 获取 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")

Documentation

Index

Constants

View Source
const (
	MessageRoleUser      = "user"
	MessageRoleAssistant = "assistant"
)

Variables

View Source
var (
	ErrChatCompletionStreamNotSupported = errors.New("streaming is not supported with this method, please use CreateChatCompletionStream") //nolint:lll
)
View Source
var (
	ErrTooManyEmptyStreamMessages = errors.New("stream has sent too many empty messages")
)

Functions

This section is empty.

Types

type APIError

type APIError struct {
	ErrorCode int    `json:"error_code"`
	ErrorMsg  string `json:"error_msg"`
	ID        string `json:"id"`
}

func (*APIError) Error

func (e *APIError) Error() string

type AccessTokenResponse

type AccessTokenResponse struct {
	RefreshToken     string `json:"refresh_token"`
	ExpiresIn        int    `json:"expires_in"`
	SessionKey       string `json:"session_key"`
	AccessToken      string `json:"access_token"`
	Scope            string `json:"scope"`
	SessionSecret    string `json:"session_secret"`
	Error            string `json:"error"`
	ErrorDescription string `json:"error_description"`
}

type Bloomz7b1ChatCompletionStream

type Bloomz7b1ChatCompletionStream struct {
	// contains filtered or unexported fields
}

func (Bloomz7b1ChatCompletionStream) Close

func (stream Bloomz7b1ChatCompletionStream) Close()

func (Bloomz7b1ChatCompletionStream) Recv

func (stream Bloomz7b1ChatCompletionStream) Recv() (response T, err error)

type Bloomz7b1Request

type Bloomz7b1Request struct {
	Messages []ChatCompletionMessage `json:"messages"`
	Stream   bool                    `json:"stream"`
	UserId   string                  `json:"user_id"`
}

type Bloomz7b1Response

type Bloomz7b1Response struct {
	ErnieBotResponse
}

type ChatCompletionMessage

type ChatCompletionMessage struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(accessToken string) *Client

func NewClientWithConfig

func NewClientWithConfig(config ClientConfig) *Client

func NewDefaultClient

func NewDefaultClient(clientId, clientSecret string) *Client

func (*Client) CreateBloomz7b1ChatCompletion

func (c *Client) CreateBloomz7b1ChatCompletion(
	ctx context.Context,
	request Bloomz7b1Request,
) (response Bloomz7b1Response, err error)

func (*Client) CreateBloomz7b1ChatCompletionStream

func (c *Client) CreateBloomz7b1ChatCompletionStream(
	ctx context.Context,
	request Bloomz7b1Request,
) (stream *Bloomz7b1ChatCompletionStream, err error)

func (*Client) CreateEmbeddings

func (c *Client) CreateEmbeddings(ctx context.Context, request EmbeddingRequest) (response EmbeddingResponse, err error)

func (*Client) CreateErnieBotChatCompletion

func (c *Client) CreateErnieBotChatCompletion(
	ctx context.Context,
	request ErnieBotRequest,
) (response ErnieBotResponse, err error)

func (*Client) CreateErnieBotChatCompletionStream

func (c *Client) CreateErnieBotChatCompletionStream(
	ctx context.Context,
	request ErnieBotRequest,
) (stream *ErnireBotChatCompletionStream, err error)

func (*Client) CreateErnieBotTurboChatCompletion

func (c *Client) CreateErnieBotTurboChatCompletion(
	ctx context.Context,
	request ErnieBotTurboRequest,
) (response ErnieBotTurboResponse, err error)

func (*Client) CreateErnieBotTurboChatCompletionStream

func (c *Client) CreateErnieBotTurboChatCompletionStream(
	ctx context.Context,
	request ErnieBotTurboRequest,
) (stream *ErnireBotChatCompletionStream, err error)

func (*Client) CreateLlamaChatCompletion

func (c *Client) CreateLlamaChatCompletion(
	ctx context.Context,
	request LlamaChatRequest,
) (response LlamaChatResponse, err error)

func (*Client) CreateLlamaChatCompletionStream

func (c *Client) CreateLlamaChatCompletionStream(
	ctx context.Context,
	request LlamaChatRequest,
) (stream *LlamaChatCompletionStream, err error)

func (*Client) GetAccessToken

func (c *Client) GetAccessToken(ctx context.Context) (*string, error)

type ClientConfig

type ClientConfig struct {
	ClientId           string
	ClientSecret       string
	BaseURL            string
	HTTPClient         *http.Client
	EmptyMessagesLimit uint
	// contains filtered or unexported fields
}

func DefaultConfig

func DefaultConfig(accessToken string) ClientConfig

type EmbeddingData

type EmbeddingData struct {
	Object    string    `json:"object"`
	Embedding []float64 `json:"embedding"`
	Index     int       `json:"index"`
}

type EmbeddingRequest

type EmbeddingRequest struct {
	Input  []string `json:"input"`
	UserId string   `json:"user_id"`
}

type EmbeddingResponse

type EmbeddingResponse struct {
	Id      string          `json:"id"`
	Object  string          `json:"object"`
	Created int             `json:"created"`
	Data    []EmbeddingData `json:"data"`
	Usage   EmbeddingUsage  `json:"usage"`
	APIError
}

type EmbeddingUsage

type EmbeddingUsage struct {
	PromptTokens int `json:"prompt_tokens"`
	TotalTokens  int `json:"total_tokens"`
}

type ErnieBotRequest

type ErnieBotRequest struct {
	Messages        []ChatCompletionMessage `json:"messages"`
	Temperature     float32                 `json:"temperature,omitempty"`
	TopP            float32                 `json:"top_p,omitempty"`
	PresencePenalty float32                 `json:"presence_penalty,omitempty"`
	Stream          bool                    `json:"stream"`
	UserId          string                  `json:"user_id,omitempty"`
}

type ErnieBotResponse

type ErnieBotResponse struct {
	Id               string     `json:"id"`
	Object           string     `json:"object"`
	Created          int        `json:"created"`
	SentenceId       int        `json:"sentence_id"`
	IsEnd            bool       `json:"is_end"`
	IsTruncated      bool       `json:"is_truncated"`
	Result           string     `json:"result"`
	NeedClearHistory bool       `json:"need_clear_history"`
	Usage            ErnieUsage `json:"usage"`
	APIError
}

type ErnieBotTurboRequest

type ErnieBotTurboRequest struct {
	Messages        []ChatCompletionMessage `json:"messages"`
	Temperature     float32                 `json:"temperature,omitempty"`
	TopP            float32                 `json:"top_p,omitempty"`
	PresencePenalty float32                 `json:"presence_penalty,omitempty"`
	Stream          bool                    `json:"stream"`
	UserId          string                  `json:"user_id"`
}

type ErnieBotTurboResponse

type ErnieBotTurboResponse struct {
	ErnieBotResponse
}

type ErnieUsage

type ErnieUsage struct {
	PromptTokens     int `json:"prompt_tokens"`
	CompletionTokens int `json:"completion_tokens"`
	TotalTokens      int `json:"total_tokens"`
}

type ErnireBotChatCompletionStream

type ErnireBotChatCompletionStream struct {
	// contains filtered or unexported fields
}

func (ErnireBotChatCompletionStream) Close

func (stream ErnireBotChatCompletionStream) Close()

func (ErnireBotChatCompletionStream) Recv

func (stream ErnireBotChatCompletionStream) Recv() (response T, err error)

type ErnireBotTurboChatCompletionStream

type ErnireBotTurboChatCompletionStream struct {
	// contains filtered or unexported fields
}

func (ErnireBotTurboChatCompletionStream) Close

func (stream ErnireBotTurboChatCompletionStream) Close()

func (ErnireBotTurboChatCompletionStream) Recv

func (stream ErnireBotTurboChatCompletionStream) Recv() (response T, err error)

type LlamaChatCompletionStream

type LlamaChatCompletionStream struct {
	// contains filtered or unexported fields
}

func (LlamaChatCompletionStream) Close

func (stream LlamaChatCompletionStream) Close()

func (LlamaChatCompletionStream) Recv

func (stream LlamaChatCompletionStream) Recv() (response T, err error)

type LlamaChatRequest

type LlamaChatRequest struct {
	Messages []ChatCompletionMessage `json:"messages"`
	Stream   bool                    `json:"stream"`
	UserId   string                  `json:"user_id"`
	Model    string                  `json:"-"`
}

type LlamaChatResponse

type LlamaChatResponse struct {
	ErnieBotResponse
}

type RequestError

type RequestError struct {
	HTTPStatusCode int
	Err            error
}

func (*RequestError) Error

func (e *RequestError) Error() string

func (*RequestError) Unwrap

func (e *RequestError) Unwrap() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL