13
13
14
14
package io .dapr .client ;
15
15
16
+ import com .fasterxml .jackson .databind .ObjectMapper ;
16
17
import com .google .common .base .Strings ;
17
18
import com .google .protobuf .Any ;
18
19
import com .google .protobuf .ByteString ;
21
22
import io .dapr .client .domain .ActorMetadata ;
22
23
import io .dapr .client .domain .AppConnectionPropertiesHealthMetadata ;
23
24
import io .dapr .client .domain .AppConnectionPropertiesMetadata ;
25
+ import io .dapr .client .domain .AssistantMessage ;
24
26
import io .dapr .client .domain .BulkPublishEntry ;
25
27
import io .dapr .client .domain .BulkPublishRequest ;
26
28
import io .dapr .client .domain .BulkPublishResponse ;
27
29
import io .dapr .client .domain .BulkPublishResponseFailedEntry ;
28
30
import io .dapr .client .domain .CloudEvent ;
29
31
import io .dapr .client .domain .ComponentMetadata ;
30
32
import io .dapr .client .domain .ConfigurationItem ;
31
- import io .dapr .client .domain .ConversationFunction ;
33
+ import io .dapr .client .domain .ConversationToolsFunction ;
32
34
import io .dapr .client .domain .ConversationInput ;
33
35
import io .dapr .client .domain .ConversationInputAlpha2 ;
34
36
import io .dapr .client .domain .ConversationMessage ;
42
44
import io .dapr .client .domain .ConversationResultChoices ;
43
45
import io .dapr .client .domain .ConversationResultMessage ;
44
46
import io .dapr .client .domain .ConversationToolCalls ;
45
- import io .dapr .client .domain .ConversationToolCallsFunction ;
47
+ import io .dapr .client .domain .ConversationToolCallsOfFunction ;
46
48
import io .dapr .client .domain .ConversationTools ;
47
49
import io .dapr .client .domain .DaprMetadata ;
48
50
import io .dapr .client .domain .DeleteJobRequest ;
73
75
import io .dapr .client .domain .SubscribeConfigurationRequest ;
74
76
import io .dapr .client .domain .SubscribeConfigurationResponse ;
75
77
import io .dapr .client .domain .SubscriptionMetadata ;
78
+ import io .dapr .client .domain .ToolMessage ;
76
79
import io .dapr .client .domain .TransactionalStateOperation ;
77
80
import io .dapr .client .domain .UnlockRequest ;
78
81
import io .dapr .client .domain .UnlockResponseStatus ;
@@ -1572,6 +1575,7 @@ public Mono<DaprMetadata> getMetadata() {
1572
1575
/**
1573
1576
* {@inheritDoc}
1574
1577
*/
1578
+ @ Deprecated (forRemoval = true )
1575
1579
@ Override
1576
1580
public Mono <ConversationResponse > converse (ConversationRequest conversationRequest ) {
1577
1581
@@ -1685,7 +1689,7 @@ public Mono<ConversationResponseAlpha2> converseAlpha2(ConversationRequestAlpha2
1685
1689
}
1686
1690
1687
1691
private DaprProtos .ConversationRequestAlpha2 buildConversationRequestProto (ConversationRequestAlpha2 request ,
1688
- DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
1692
+ DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
1689
1693
if (request .getTools () != null ) {
1690
1694
buildConversationTools (request .getTools (), builder );
1691
1695
}
@@ -1694,13 +1698,21 @@ private DaprProtos.ConversationRequestAlpha2 buildConversationRequestProto(Conve
1694
1698
builder .putAllMetadata (request .getMetadata ());
1695
1699
}
1696
1700
1701
+
1697
1702
if (request .getParameters () != null ) {
1698
1703
Map <String , Any > parameters = request .getParameters ()
1699
1704
.entrySet ().stream ()
1700
1705
.collect (Collectors .toMap (
1701
1706
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
+ );
1704
1716
builder .putAllParameters (parameters );
1705
1717
}
1706
1718
@@ -1727,7 +1739,7 @@ private DaprProtos.ConversationRequestAlpha2 buildConversationRequestProto(Conve
1727
1739
private void buildConversationTools (List <ConversationTools > tools ,
1728
1740
DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
1729
1741
for (ConversationTools tool : tools ) {
1730
- ConversationFunction function = tool .getFunction ();
1742
+ ConversationToolsFunction function = tool .getFunction ();
1731
1743
1732
1744
DaprProtos .ConversationToolsFunction .Builder protoFunction = DaprProtos .ConversationToolsFunction .newBuilder ()
1733
1745
.setName (function .getName ());
@@ -1741,7 +1753,14 @@ private void buildConversationTools(List<ConversationTools> tools,
1741
1753
.entrySet ().stream ()
1742
1754
.collect (Collectors .toMap (
1743
1755
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
+ }
1745
1764
));
1746
1765
1747
1766
protoFunction .putAllParameters (functionParams );
@@ -1766,8 +1785,8 @@ private DaprProtos.ConversationMessage buildConversationMessage(ConversationMess
1766
1785
if (message .getContent () != null ) {
1767
1786
toolMessage .addAllContent (getConversationMessageContent (message ));
1768
1787
}
1769
- if (message .getToolId () != null ) {
1770
- toolMessage .setToolId (message .getToolId ());
1788
+ if ((( ToolMessage ) message ) .getToolId () != null ) {
1789
+ toolMessage .setToolId ((( ToolMessage ) message ) .getToolId ());
1771
1790
}
1772
1791
messageBuilder .setOfTool (toolMessage );
1773
1792
break ;
@@ -1785,14 +1804,15 @@ private DaprProtos.ConversationMessage buildConversationMessage(ConversationMess
1785
1804
case ASSISTANT :
1786
1805
DaprProtos .ConversationMessageOfAssistant .Builder assistantMessage =
1787
1806
DaprProtos .ConversationMessageOfAssistant .newBuilder ();
1807
+
1788
1808
if (message .getName () != null ) {
1789
1809
assistantMessage .setName (message .getName ());
1790
1810
}
1791
1811
if (message .getContent () != null ) {
1792
1812
assistantMessage .addAllContent (getConversationMessageContent (message ));
1793
1813
}
1794
- if (message .getToolCalls () != null ) {
1795
- assistantMessage .addAllToolCalls (getConversationToolCalls (message ));
1814
+ if ((( AssistantMessage ) message ) .getToolCalls () != null ) {
1815
+ assistantMessage .addAllToolCalls (getConversationToolCalls (( AssistantMessage ) message ));
1796
1816
}
1797
1817
messageBuilder .setOfAssistant (assistantMessage );
1798
1818
break ;
@@ -1851,15 +1871,18 @@ private ConversationResultMessage buildConversationResultMessage(DaprProtos.Conv
1851
1871
List <ConversationToolCalls > toolCalls = new ArrayList <>();
1852
1872
1853
1873
for (DaprProtos .ConversationToolCalls protoToolCall : protoChoice .getMessage ().getToolCallsList ()) {
1854
- ConversationToolCallsFunction function = null ;
1874
+ ConversationToolCallsOfFunction function = null ;
1855
1875
if (protoToolCall .hasFunction ()) {
1856
- function = new ConversationToolCallsFunction (
1876
+ function = new ConversationToolCallsOfFunction (
1857
1877
protoToolCall .getFunction ().getName (),
1858
1878
protoToolCall .getFunction ().getArguments ()
1859
1879
);
1860
1880
}
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 );
1863
1886
}
1864
1887
1865
1888
return new ConversationResultMessage (
@@ -1882,16 +1905,19 @@ private List<DaprProtos.ConversationMessageContent> getConversationMessageConten
1882
1905
}
1883
1906
1884
1907
private List <DaprProtos .ConversationToolCalls > getConversationToolCalls (
1885
- ConversationMessage conversationMessage ) {
1908
+ AssistantMessage assistantMessage ) {
1886
1909
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 ()
1890
1912
.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 ());
1895
1921
}
1896
1922
1897
1923
return conversationToolCalls ;
0 commit comments