Skip to content

Commit 5527132

Browse files
committed
feat: add partial completion sample and docs
1 parent b11d4ac commit 5527132

File tree

2 files changed

+138
-0
lines changed

2 files changed

+138
-0
lines changed

README.zh-Hans.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,86 @@ Usage: in(25)/out(7)/total(32)
10491049
*/
10501050
```
10511051

1052+
### 前缀续写
1053+
1054+
将需要续写的前缀作为 `assistant` 消息放到 `messages` 数组末尾,并将 `Partial` 设置为 `true`,大模型将根据这个前缀补全剩下的内容。
1055+
1056+
这个模式下无法开启深度思考。
1057+
1058+
示例请求
1059+
1060+
```csharp
1061+
var messages = new List<TextChatMessage>
1062+
{
1063+
TextChatMessage.User("请补全这个 C# 函数,不要添加其他内容"),
1064+
TextChatMessage.Assistant("public int Fibonacci(int n)", partial: true)
1065+
};
1066+
1067+
var completion = client.GetTextCompletionStreamAsync(
1068+
new ModelRequest<TextGenerationInput, ITextGenerationParameters>()
1069+
{
1070+
Model = "qwen-turbo",
1071+
Input = new TextGenerationInput() { Messages = messages },
1072+
Parameters = new TextGenerationParameters()
1073+
{
1074+
ResultFormat = "message",
1075+
IncrementalOutput = true
1076+
}
1077+
});
1078+
```
1079+
1080+
完整代码:
1081+
1082+
```csharp
1083+
var messages = new List<TextChatMessage>
1084+
{
1085+
TextChatMessage.User("请补全这个 C# 函数,不要添加其他内容"),
1086+
TextChatMessage.Assistant("public int Fibonacci(int n)", partial: true)
1087+
};
1088+
Console.WriteLine($"User > {messages[0].Content}");
1089+
Console.Write($"Assistant > {messages[1].Content}");
1090+
var completion = client.GetTextCompletionStreamAsync(
1091+
new ModelRequest<TextGenerationInput, ITextGenerationParameters>()
1092+
{
1093+
Model = "qwen-turbo",
1094+
Input = new TextGenerationInput() { Messages = messages },
1095+
Parameters = new TextGenerationParameters()
1096+
{
1097+
ResultFormat = "message",
1098+
IncrementalOutput = true
1099+
}
1100+
});
1101+
var reply = new StringBuilder();
1102+
TextGenerationTokenUsage? usage = null;
1103+
await foreach (var chunk in completion)
1104+
{
1105+
var choice = chunk.Output.Choices![0];
1106+
Console.Write(choice.Message.Content);
1107+
reply.Append(choice.Message.Content);
1108+
usage = chunk.Usage;
1109+
}
1110+
1111+
Console.WriteLine();
1112+
messages.Add(TextChatMessage.Assistant(reply.ToString()));
1113+
if (usage != null)
1114+
{
1115+
Console.WriteLine(
1116+
$"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/reasoning({usage.OutputTokensDetails?.ReasoningTokens})/total({usage.TotalTokens})");
1117+
}
1118+
1119+
/*
1120+
User > 请补全这个 C# 函数,不要添加其他内容
1121+
Assistant > public int Fibonacci(int n)
1122+
{
1123+
if (n <= 1)
1124+
return n;
1125+
1126+
return Fibonacci(n - 1) + Fibonacci(n - 2);
1127+
}
1128+
Usage: in(31)/out(34)/reasoning()/total(65)
1129+
*/
1130+
```
1131+
10521132

10531133

10541134
### 多模态
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using System.Text;
2+
using Cnblogs.DashScope.Core;
3+
4+
namespace Cnblogs.DashScope.Sample.Text;
5+
6+
public class PrefixCompletionSample : ISample
7+
{
8+
/// <inheritdoc />
9+
public string Description => "Prefix completion sample";
10+
11+
/// <inheritdoc />
12+
public async Task RunAsync(IDashScopeClient client)
13+
{
14+
var messages = new List<TextChatMessage>
15+
{
16+
TextChatMessage.User("请补全这个 C# 函数,不要添加其他内容"),
17+
TextChatMessage.Assistant("public int Fibonacci(int n)", partial: true)
18+
};
19+
Console.WriteLine($"User > {messages[0].Content}");
20+
Console.Write($"Assistant > {messages[1].Content}");
21+
var completion = client.GetTextCompletionStreamAsync(
22+
new ModelRequest<TextGenerationInput, ITextGenerationParameters>()
23+
{
24+
Model = "qwen-turbo",
25+
Input = new TextGenerationInput() { Messages = messages },
26+
Parameters = new TextGenerationParameters() { ResultFormat = "message", IncrementalOutput = true }
27+
});
28+
var reply = new StringBuilder();
29+
TextGenerationTokenUsage? usage = null;
30+
await foreach (var chunk in completion)
31+
{
32+
var choice = chunk.Output.Choices![0];
33+
Console.Write(choice.Message.Content);
34+
reply.Append(choice.Message.Content);
35+
usage = chunk.Usage;
36+
}
37+
38+
Console.WriteLine();
39+
messages.Add(TextChatMessage.Assistant(reply.ToString()));
40+
if (usage != null)
41+
{
42+
Console.WriteLine(
43+
$"Usage: in({usage.InputTokens})/out({usage.OutputTokens})/reasoning({usage.OutputTokensDetails?.ReasoningTokens})/total({usage.TotalTokens})");
44+
}
45+
}
46+
}
47+
48+
/*
49+
User > 请补全这个 C# 函数,不要添加其他内容
50+
Assistant > public int Fibonacci(int n)
51+
{
52+
if (n <= 1)
53+
return n;
54+
55+
return Fibonacci(n - 1) + Fibonacci(n - 2);
56+
}
57+
Usage: in(31)/out(34)/reasoning()/total(65)
58+
*/

0 commit comments

Comments
 (0)