Skip to content

Latest commit

 

History

History
122 lines (89 loc) · 2.85 KB

File metadata and controls

122 lines (89 loc) · 2.85 KB

ERNIE-Bot SDK

NuGet

ERNIE-Bot(文心千帆) .NET SDK

安装

dotnet add package ERNIE-Bot.SDK --prerelease

使用

引入该 Package 之后,实例化ERNIEBotClient 即可使用。

var clientId = builder.Configuration["ClientId"];
var secret = builder.Configuration["ClientSecret"];

var client = new ERNIEBotClient(clientId, secret);

ChatCompletion

直接使用ChatAsync方法可以完成对话。

其中 ModelEndpoint 是预置的模型地址,可以使用 ModelEndpoints 类来获取所有支持的模型地址。

await client.ChatAsync(new ChatCompletionsRequest()
{
    Messages = new List<Message>
        {
            new Message()
            {
                Content = input.Text,
                Role = MessageRole.User
            }
        }
}, ModelEndpoints.ERNIE_Bot);

ChatCompletionStream

使用 ChatStreamAsync 方法可以获取一个流,该流会不断的返回对话结果。

var results = client.ChatStreamAsync(new ChatCompletionsRequest()
{
    Messages = new List<Message>
        {
            new Message()
            {
                Content = input.Text,
                Role = MessageRole.User
            }
        }
}, ModelEndpoints.ERNIE_Bot);

可以使用一下方法获取流中的数据。

await foreach (var result in results)
{
    // do something with result
}

Embedding

使用 EmbeddingAsync 方法可以获取文本的 Embedding。 同样可以使用 ModelEndpoints 类来获取所支持的Embedding模型的地址。

var result = await _client.EmbeddingsAsync(new EmbeddingsRequest()
{
    Input = new List<string>()
        {
            input.Text
        }
},ModelEndpoints.Embedding_v1);

自定义模型

如果您使用了自定义的模型服务,可以通过以下方法声明自定义模型的地址。

var endpoint = new ModelEndpoint("{申请发布时填写的API地址}");

API 鉴权令牌的存储和管理

由于百度的接口采用了AccessToken的鉴权方式,所以需要在使用之前先获取AccessToken,然后在请求的时候带上AccessToken。为了方便管理,SDK提供了ITokenStore接口,用于存储和管理AccessToken。

用户可自行实现该接口,自行管理AccessToken的存储和更新。SDK提供了MemoryTokenStore,在内存中存储AccessToken,该实现依赖于MemoryCache

接口支持

  • API 鉴权
  • ERNIE-Bot
  • ERNIE-Bot-turbo
  • Embedding-V1
  • BLOOMZ-7B
  • Llama_2_7b_chat
  • Llama_2_13b_chat
  • Llama_2_70b_chat
  • Qianfan_BLOOMZ_7B_compressed
  • Qianfan_Chinese_Llama_2_7b
  • ChatGLM2_6b_32k
  • AquilaChat_7b
  • bge_large_zh
  • bge_large_en
  • 自定义chat模型
  • Prompt模版