Skip to content

Commit 8dc63f2

Browse files
committed
test: improve test coverage of text embedding and multimodal generation
1 parent 923eedf commit 8dc63f2

32 files changed

+804
-116
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:Boolean x:Key="/Default/Environment/Filtering/ExcludeCoverageFilters/=Cnblogs_002EDashScope_002ESample_003B_002A_003B_002A_003B_002A/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

src/Cnblogs.DashScope.Sdk/MultimodalMessage.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ namespace Cnblogs.DashScope.Sdk;
77
/// </summary>
88
/// <param name="Role">The role associated with this message.</param>
99
/// <param name="Content">The contents of this message.</param>
10-
public record MultimodalMessage(string Role, List<MultimodalMessageContent> Content)
11-
: IMessage<List<MultimodalMessageContent>>;
10+
public record MultimodalMessage(string Role, IReadOnlyList<MultimodalMessageContent> Content)
11+
: IMessage<IReadOnlyList<MultimodalMessageContent>>;

src/Cnblogs.DashScope.Sdk/MultimodalMessageContent.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace Cnblogs.DashScope.Sdk;
77
/// </summary>
88
/// <param name="Image">Image url.</param>
99
/// <param name="Text">Text content.</param>
10+
/// <param name="Audio">Audio url.</param>
1011
public record MultimodalMessageContent(
1112
[StringSyntax(StringSyntaxAttribute.Uri)]
1213
string? Image = null,

src/Cnblogs.DashScope.Sdk/MultimodalTokenUsage.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,10 @@ public class MultimodalTokenUsage
1818
/// <summary>
1919
/// The token usage of input image.
2020
/// </summary>
21-
public int ImageTokens { get; set; }
21+
public int? ImageTokens { get; set; }
22+
23+
/// <summary>
24+
/// The token usage of input audio.
25+
/// </summary>
26+
public int? AudioTokens { get; set; }
2227
}

src/Cnblogs.DashScope.Sdk/QWenMultimodal/QWenMultimodalGenerationApi.cs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ public static class QWenMultimodalGenerationApi
1414
/// <param name="parameters">The optional configuration for this request.</param>
1515
/// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
1616
/// <returns></returns>
17-
public static Task<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWenVlCompletionAsync(
17+
public static Task<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWenMultimodalCompletionAsync(
1818
this IDashScopeClient client,
1919
QWenMultimodalModel model,
2020
IEnumerable<MultimodalMessage> messages,
2121
MultimodalParameters? parameters = null,
2222
CancellationToken cancellationToken = default)
2323
{
24-
return client.GetQWenVlCompletionAsync(model.GetModelName(), messages, parameters, cancellationToken);
24+
return client.GetQWenMultimodalCompletionAsync(model.GetModelName(), messages, parameters, cancellationToken);
2525
}
2626

2727
/// <summary>
@@ -33,7 +33,7 @@ public static Task<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWe
3333
/// <param name="parameters">The optional configuration for this request.</param>
3434
/// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
3535
/// <returns></returns>
36-
public static Task<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWenVlCompletionAsync(
36+
public static Task<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWenMultimodalCompletionAsync(
3737
this IDashScopeClient client,
3838
string model,
3939
IEnumerable<MultimodalMessage> messages,
@@ -59,14 +59,19 @@ public static Task<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWe
5959
/// <param name="parameters">The optional configuration for this request.</param>
6060
/// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
6161
/// <returns></returns>
62-
public static IAsyncEnumerable<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWenVlCompletionStreamAsync(
63-
this IDashScopeClient client,
64-
QWenMultimodalModel model,
65-
IEnumerable<MultimodalMessage> messages,
66-
MultimodalParameters? parameters = null,
67-
CancellationToken cancellationToken = default)
62+
public static IAsyncEnumerable<ModelResponse<MultimodalOutput, MultimodalTokenUsage>>
63+
GetQWenMultimodalCompletionStreamAsync(
64+
this IDashScopeClient client,
65+
QWenMultimodalModel model,
66+
IEnumerable<MultimodalMessage> messages,
67+
MultimodalParameters? parameters = null,
68+
CancellationToken cancellationToken = default)
6869
{
69-
return client.GetQWenVlCompletionStreamAsync(model.GetModelName(), messages, parameters, cancellationToken);
70+
return client.GetQWenMultimodalCompletionStreamAsync(
71+
model.GetModelName(),
72+
messages,
73+
parameters,
74+
cancellationToken);
7075
}
7176

7277
/// <summary>
@@ -78,12 +83,13 @@ public static IAsyncEnumerable<ModelResponse<MultimodalOutput, MultimodalTokenUs
7883
/// <param name="parameters">The optional configuration for this request.</param>
7984
/// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
8085
/// <returns></returns>
81-
public static IAsyncEnumerable<ModelResponse<MultimodalOutput, MultimodalTokenUsage>> GetQWenVlCompletionStreamAsync(
82-
this IDashScopeClient client,
83-
string model,
84-
IEnumerable<MultimodalMessage> messages,
85-
MultimodalParameters? parameters = null,
86-
CancellationToken cancellationToken = default)
86+
public static IAsyncEnumerable<ModelResponse<MultimodalOutput, MultimodalTokenUsage>>
87+
GetQWenMultimodalCompletionStreamAsync(
88+
this IDashScopeClient client,
89+
string model,
90+
IEnumerable<MultimodalMessage> messages,
91+
MultimodalParameters? parameters = null,
92+
CancellationToken cancellationToken = default)
8793
{
8894
return client.GetMultimodalGenerationStreamAsync(
8995
new ModelRequest<MultimodalInput, MultimodalParameters>

src/Cnblogs.DashScope.Sdk/QWenMultimodal/QWenMultimodalModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ public enum QWenMultimodalModel
1818
/// <summary>
1919
/// qwen-audio-turbo
2020
/// </summary>
21-
QwenAudioTurbo = 3
21+
QWenAudioTurbo = 3
2222
}

src/Cnblogs.DashScope.Sdk/QWenMultimodal/QWenMultimodalModelNames.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public static string GetModelName(this QWenMultimodalModel multimodalModel)
88
{
99
QWenMultimodalModel.QWenVlPlus => "qwen-vl-plus",
1010
QWenMultimodalModel.QWenVlMax => "qwen-vl-max",
11-
QWenMultimodalModel.QwenAudioTurbo => "qwen-audio-turbo",
11+
QWenMultimodalModel.QWenAudioTurbo => "qwen-audio-turbo",
1212
_ => throw new ArgumentOutOfRangeException(
1313
nameof(multimodalModel),
1414
multimodalModel,

src/Cnblogs.DashScope.Sdk/TextEmbedding/TextEmbeddingApi.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ public static class TextEmbeddingApi
1414
/// <param name="parameters">Optional parameter for embedding.</param>
1515
/// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
1616
/// <returns></returns>
17-
public static Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>> GetEmbeddingsAsync(
17+
public static Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>> GetTextEmbeddingsAsync(
1818
this IDashScopeClient client,
1919
TextEmbeddingModel model,
2020
IEnumerable<string> texts,
2121
TextEmbeddingParameters? parameters,
2222
CancellationToken cancellationToken = default)
2323
{
24-
return client.GetEmbeddingsAsync(model.GetModelName(), texts, parameters, cancellationToken);
24+
return client.GetTextEmbeddingsAsync(model.GetModelName(), texts, parameters, cancellationToken);
2525
}
2626

2727
/// <summary>
@@ -33,7 +33,7 @@ public static Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>>
3333
/// <param name="parameters">Optional parameter for embedding.</param>
3434
/// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
3535
/// <returns></returns>
36-
public static Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>> GetEmbeddingsAsync(
36+
public static Task<ModelResponse<TextEmbeddingOutput, TextEmbeddingTokenUsage>> GetTextEmbeddingsAsync(
3737
this IDashScopeClient client,
3838
string model,
3939
IEnumerable<string> texts,

src/Cnblogs.DashScope.Sdk/TextGenerationStopConvertor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class TextGenerationStopConvertor : JsonConverter<TextGenerationStop>
1616
{
1717
return reader.TokenType switch
1818
{
19-
JsonTokenType.String => new TextGenerationStop(reader.GetString()!),
19+
JsonTokenType.String => reader.GetString()!,
2020
JsonTokenType.Null => null,
2121
JsonTokenType.StartArray => ReadArray(ref reader),
2222
_ => throw new JsonException(
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace Cnblogs.DashScope.Sdk;
2+
3+
/// <summary>
4+
/// Available text types for text embedding.
5+
/// </summary>
6+
public class TextTypes
7+
{
8+
/// <summary>
9+
/// document type, this is the default value.
10+
/// </summary>
11+
public const string Document = "document";
12+
13+
/// <summary>
14+
/// query type.
15+
/// </summary>
16+
public const string Query = "query";
17+
}

0 commit comments

Comments
 (0)