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);
直接使用ChatAsync方法可以完成对话。
其中 ModelEndpoint 是预置的模型地址,可以使用 ModelEndpoints 类来获取所有支持的模型地址。
await client.ChatAsync(new ChatCompletionsRequest()
{
Messages = new List<Message>
{
new Message()
{
Content = input.Text,
Role = MessageRole.User
}
}
}, ModelEndpoints.ERNIE_Bot);
使用 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
}
使用 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地址}");
由于百度的接口采用了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模版