1313
1414package io .dapr .client ;
1515
16+ import com .fasterxml .jackson .databind .ObjectMapper ;
1617import com .google .common .base .Strings ;
1718import com .google .protobuf .Any ;
1819import com .google .protobuf .ByteString ;
2122import io .dapr .client .domain .ActorMetadata ;
2223import io .dapr .client .domain .AppConnectionPropertiesHealthMetadata ;
2324import io .dapr .client .domain .AppConnectionPropertiesMetadata ;
25+ import io .dapr .client .domain .AssistantMessage ;
2426import io .dapr .client .domain .BulkPublishEntry ;
2527import io .dapr .client .domain .BulkPublishRequest ;
2628import io .dapr .client .domain .BulkPublishResponse ;
2729import io .dapr .client .domain .BulkPublishResponseFailedEntry ;
2830import io .dapr .client .domain .CloudEvent ;
2931import io .dapr .client .domain .ComponentMetadata ;
3032import io .dapr .client .domain .ConfigurationItem ;
31- import io .dapr .client .domain .ConversationFunction ;
33+ import io .dapr .client .domain .ConversationToolsFunction ;
3234import io .dapr .client .domain .ConversationInput ;
3335import io .dapr .client .domain .ConversationInputAlpha2 ;
3436import io .dapr .client .domain .ConversationMessage ;
4244import io .dapr .client .domain .ConversationResultChoices ;
4345import io .dapr .client .domain .ConversationResultMessage ;
4446import io .dapr .client .domain .ConversationToolCalls ;
45- import io .dapr .client .domain .ConversationToolCallsFunction ;
47+ import io .dapr .client .domain .ConversationToolCallsOfFunction ;
4648import io .dapr .client .domain .ConversationTools ;
4749import io .dapr .client .domain .DaprMetadata ;
4850import io .dapr .client .domain .DeleteJobRequest ;
7375import io .dapr .client .domain .SubscribeConfigurationRequest ;
7476import io .dapr .client .domain .SubscribeConfigurationResponse ;
7577import io .dapr .client .domain .SubscriptionMetadata ;
78+ import io .dapr .client .domain .ToolMessage ;
7679import io .dapr .client .domain .TransactionalStateOperation ;
7780import io .dapr .client .domain .UnlockRequest ;
7881import io .dapr .client .domain .UnlockResponseStatus ;
@@ -1572,6 +1575,7 @@ public Mono<DaprMetadata> getMetadata() {
15721575 /**
15731576 * {@inheritDoc}
15741577 */
1578+ @ Deprecated (forRemoval = true )
15751579 @ Override
15761580 public Mono <ConversationResponse > converse (ConversationRequest conversationRequest ) {
15771581
@@ -1685,7 +1689,7 @@ public Mono<ConversationResponseAlpha2> converseAlpha2(ConversationRequestAlpha2
16851689 }
16861690
16871691 private DaprProtos .ConversationRequestAlpha2 buildConversationRequestProto (ConversationRequestAlpha2 request ,
1688- DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
1692+ DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
16891693 if (request .getTools () != null ) {
16901694 buildConversationTools (request .getTools (), builder );
16911695 }
@@ -1694,13 +1698,21 @@ private DaprProtos.ConversationRequestAlpha2 buildConversationRequestProto(Conve
16941698 builder .putAllMetadata (request .getMetadata ());
16951699 }
16961700
1701+
16971702 if (request .getParameters () != null ) {
16981703 Map <String , Any > parameters = request .getParameters ()
16991704 .entrySet ().stream ()
17001705 .collect (Collectors .toMap (
17011706 Map .Entry ::getKey ,
1702- e -> Any .pack ((Message ) e .getValue ())
1703- ));
1707+ e -> {
1708+ try {
1709+ return Any .newBuilder ().setValue (ByteString .copyFrom (objectSerializer .serialize (e .getValue ())))
1710+ .build ();
1711+ } catch (IOException ex ) {
1712+ throw new RuntimeException (ex );
1713+ }
1714+ })
1715+ );
17041716 builder .putAllParameters (parameters );
17051717 }
17061718
@@ -1727,7 +1739,7 @@ private DaprProtos.ConversationRequestAlpha2 buildConversationRequestProto(Conve
17271739 private void buildConversationTools (List <ConversationTools > tools ,
17281740 DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
17291741 for (ConversationTools tool : tools ) {
1730- ConversationFunction function = tool .getFunction ();
1742+ ConversationToolsFunction function = tool .getFunction ();
17311743
17321744 DaprProtos .ConversationToolsFunction .Builder protoFunction = DaprProtos .ConversationToolsFunction .newBuilder ()
17331745 .setName (function .getName ());
@@ -1741,7 +1753,14 @@ private void buildConversationTools(List<ConversationTools> tools,
17411753 .entrySet ().stream ()
17421754 .collect (Collectors .toMap (
17431755 Map .Entry ::getKey ,
1744- e -> Any .pack ((Message ) e .getValue ())
1756+ e -> {
1757+ try {
1758+ return Any .newBuilder ().setValue (ByteString .copyFrom (objectSerializer .serialize (e .getValue ())))
1759+ .build ();
1760+ } catch (IOException ex ) {
1761+ throw new RuntimeException (ex );
1762+ }
1763+ }
17451764 ));
17461765
17471766 protoFunction .putAllParameters (functionParams );
@@ -1766,8 +1785,8 @@ private DaprProtos.ConversationMessage buildConversationMessage(ConversationMess
17661785 if (message .getContent () != null ) {
17671786 toolMessage .addAllContent (getConversationMessageContent (message ));
17681787 }
1769- if (message .getToolId () != null ) {
1770- toolMessage .setToolId (message .getToolId ());
1788+ if ((( ToolMessage ) message ) .getToolId () != null ) {
1789+ toolMessage .setToolId ((( ToolMessage ) message ) .getToolId ());
17711790 }
17721791 messageBuilder .setOfTool (toolMessage );
17731792 break ;
@@ -1785,14 +1804,15 @@ private DaprProtos.ConversationMessage buildConversationMessage(ConversationMess
17851804 case ASSISTANT :
17861805 DaprProtos .ConversationMessageOfAssistant .Builder assistantMessage =
17871806 DaprProtos .ConversationMessageOfAssistant .newBuilder ();
1807+
17881808 if (message .getName () != null ) {
17891809 assistantMessage .setName (message .getName ());
17901810 }
17911811 if (message .getContent () != null ) {
17921812 assistantMessage .addAllContent (getConversationMessageContent (message ));
17931813 }
1794- if (message .getToolCalls () != null ) {
1795- assistantMessage .addAllToolCalls (getConversationToolCalls (message ));
1814+ if ((( AssistantMessage ) message ) .getToolCalls () != null ) {
1815+ assistantMessage .addAllToolCalls (getConversationToolCalls (( AssistantMessage ) message ));
17961816 }
17971817 messageBuilder .setOfAssistant (assistantMessage );
17981818 break ;
@@ -1851,15 +1871,18 @@ private ConversationResultMessage buildConversationResultMessage(DaprProtos.Conv
18511871 List <ConversationToolCalls > toolCalls = new ArrayList <>();
18521872
18531873 for (DaprProtos .ConversationToolCalls protoToolCall : protoChoice .getMessage ().getToolCallsList ()) {
1854- ConversationToolCallsFunction function = null ;
1874+ ConversationToolCallsOfFunction function = null ;
18551875 if (protoToolCall .hasFunction ()) {
1856- function = new ConversationToolCallsFunction (
1876+ function = new ConversationToolCallsOfFunction (
18571877 protoToolCall .getFunction ().getName (),
18581878 protoToolCall .getFunction ().getArguments ()
18591879 );
18601880 }
1861-
1862- toolCalls .add (new ConversationToolCalls (protoToolCall .getId (), function ));
1881+
1882+ ConversationToolCalls conversationToolCalls = new ConversationToolCalls (function );
1883+ conversationToolCalls .setId (protoToolCall .getId ());
1884+
1885+ toolCalls .add (conversationToolCalls );
18631886 }
18641887
18651888 return new ConversationResultMessage (
@@ -1882,16 +1905,19 @@ private List<DaprProtos.ConversationMessageContent> getConversationMessageConten
18821905 }
18831906
18841907 private List <DaprProtos .ConversationToolCalls > getConversationToolCalls (
1885- ConversationMessage conversationMessage ) {
1908+ AssistantMessage assistantMessage ) {
18861909 List <DaprProtos .ConversationToolCalls > conversationToolCalls = new ArrayList <>();
1887- for (ConversationToolCalls conversationToolCall : conversationMessage .getToolCalls ()) {
1888- conversationToolCalls .add (DaprProtos .ConversationToolCalls .newBuilder ()
1889- .setId (conversationToolCall .getId ())
1910+ for (ConversationToolCalls conversationToolCall : assistantMessage .getToolCalls ()) {
1911+ DaprProtos .ConversationToolCalls .Builder toolCallsBuilder = DaprProtos .ConversationToolCalls .newBuilder ()
18901912 .setFunction (DaprProtos .ConversationToolCallsOfFunction .newBuilder ()
1891- .setName (conversationToolCall .getFunction ().getName ())
1892- .setArguments (conversationToolCall .getFunction ().getArguments ())
1893- .build ())
1894- .build ());
1913+ .setName (conversationToolCall .getFunction ().getName ())
1914+ .setArguments (conversationToolCall .getFunction ().getArguments ())
1915+ .build ());
1916+ if (conversationToolCall .getId () != null ) {
1917+ toolCallsBuilder .setId (conversationToolCall .getId ());
1918+ }
1919+
1920+ conversationToolCalls .add (toolCallsBuilder .build ());
18951921 }
18961922
18971923 return conversationToolCalls ;
0 commit comments