diff --git a/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj b/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj index a7ba2f0..88bfded 100644 --- a/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj +++ b/sample/Cnblogs.DashScope.Sample/Cnblogs.DashScope.Sample.csproj @@ -20,7 +20,7 @@ - + diff --git a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj index fe758a6..63d65db 100644 --- a/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj +++ b/src/Cnblogs.DashScope.AI/Cnblogs.DashScope.AI.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs b/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs index f28456f..3e2561f 100644 --- a/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs +++ b/src/Cnblogs.DashScope.AI/DashScopeChatClient.cs @@ -43,7 +43,7 @@ public DashScopeChatClient(IDashScopeClient dashScopeClient, string modelId) /// public async Task GetResponseAsync( - IList chatMessages, + IEnumerable chatMessages, ChatOptions? options = null, CancellationToken cancellationToken = default) { @@ -130,7 +130,7 @@ public async Task GetResponseAsync( /// public async IAsyncEnumerable GetStreamingResponseAsync( - IList chatMessages, + IEnumerable chatMessages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) { @@ -202,10 +202,10 @@ public async IAsyncEnumerable GetStreamingResponseAsync( yield return new ChatResponseUpdate() { ResponseId = completion.ResponseId, - Role = completion.Message.Role, + Role = completion.Messages[0].Role, AdditionalProperties = completion.AdditionalProperties, - Contents = completion.Message.Contents, - RawRepresentation = completion.Message.RawRepresentation, + Contents = completion.Messages[0].Contents, + RawRepresentation = completion.Messages[0].RawRepresentation, CreatedAt = completion.CreatedAt, FinishReason = completion.FinishReason, ModelId = completion.ModelId, @@ -392,11 +392,11 @@ private List ToMultimodalMessageContents(IList MultimodalMessageContent.TextContent(text.Text), - DataContent { Data.Length: > 0 } data when data.MediaTypeStartsWith("image") => + DataContent { Data.Length: > 0 } data when data.HasTopLevelMediaType("image") => MultimodalMessageContent.ImageContent( - data.Data.Value.Span, + data.Data.Span, data.MediaType ?? throw new InvalidOperationException("image media type should not be null")), - DataContent { Uri: { } uri } data when data.MediaTypeStartsWith("image") => + DataContent { Uri: { } uri } data when data.HasTopLevelMediaType("image") => MultimodalMessageContent.ImageContent(uri), _ => null }; @@ -422,7 +422,7 @@ private IEnumerable ToTextChatMessages( { yield return new TextChatMessage( from.Role.Value, - from.Text ?? string.Empty, + from.Text, from.AuthorName); } else if (from.Role == ChatRole.Tool) @@ -464,7 +464,7 @@ private IEnumerable ToTextChatMessages( // <400> InternalError.Algo.InvalidParameter: Empty tool_calls is not supported in message yield return new TextChatMessage( from.Role.Value, - from.Text ?? string.Empty, + from.Text, from.AuthorName, null, functionCall.Count > 0 ? functionCall : null); diff --git a/src/Cnblogs.DashScope.AI/DashScopeTextEmbeddingGenerator.cs b/src/Cnblogs.DashScope.AI/DashScopeTextEmbeddingGenerator.cs index fba5e02..06c28d7 100644 --- a/src/Cnblogs.DashScope.AI/DashScopeTextEmbeddingGenerator.cs +++ b/src/Cnblogs.DashScope.AI/DashScopeTextEmbeddingGenerator.cs @@ -29,7 +29,6 @@ public DashScopeTextEmbeddingGenerator(IDashScopeClient dashScopeClient, string _dashScopeClient = dashScopeClient; _modelId = modelId; _parameters = new TextEmbeddingParameters { Dimension = dimensions }; - Metadata = new EmbeddingGeneratorMetadata("dashscope", _dashScopeClient.BaseAddress, modelId, dimensions); } /// @@ -88,7 +87,4 @@ public void Dispose() options.AdditionalProperties?.GetValueOrDefault(nameof(TextEmbeddingParameters.TextType)) as string, }; } - - /// - public EmbeddingGeneratorMetadata Metadata { get; } } diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/ChatClientTests.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/ChatClientTests.cs index 89ac79c..c1f5096 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/ChatClientTests.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/ChatClientTests.cs @@ -46,7 +46,7 @@ public async Task ChatClient_TextCompletion_SuccessAsync() Arg.Is>( m => m.IsEquivalent(testCase.RequestModel)), Arg.Any()); - response.Message.Text.Should().Be(testCase.ResponseModel.Output.Choices?.First().Message.Content); + response.Messages[0].Text.Should().Be(testCase.ResponseModel.Output.Choices?.First().Message.Content); } [Fact] @@ -136,7 +136,7 @@ public async Task ChatClient_ImageRecognition_SuccessAsync() await dashScopeClient.Received().GetMultimodalGenerationAsync( Arg.Is>(m => m.IsEquivalent(testCase.RequestModel)), Arg.Any()); - response.Choices[0].Text.Should() + response.Messages[0].Text.Should() .BeEquivalentTo(testCase.ResponseModel.Output.Choices[0].Message.Content[0].Text); } diff --git a/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs b/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs index b5e2483..fec5a40 100644 --- a/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs +++ b/test/Cnblogs.DashScope.Sdk.UnitTests/Utils/Snapshots.cs @@ -781,7 +781,7 @@ public static class MultimodalGeneration MultimodalMessage.User( [ MultimodalMessageContent.ImageContent( - "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"), + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="), MultimodalMessageContent.TextContent("这个图片是哪里,请用简短的语言回答") ]) ] @@ -881,7 +881,7 @@ public static class MultimodalGeneration MultimodalMessage.User( [ MultimodalMessageContent.ImageContent( - "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"), + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="), MultimodalMessageContent.TextContent("这个图片是哪里,请用简短的语言回答") ]) ]