@@ -1648,8 +1648,26 @@ private void validateConversationRequest(ConversationRequest conversationRequest
1648
1648
@ Override
1649
1649
public Mono <ConversationResponseAlpha2 > converseAlpha2 (ConversationRequestAlpha2 conversationRequestAlpha2 ) {
1650
1650
try {
1651
- validateConversationRequestAlpha2 (conversationRequestAlpha2 );
1652
- DaprProtos .ConversationRequestAlpha2 protoRequest = buildConversationRequestProto (conversationRequestAlpha2 );
1651
+ if ((conversationRequestAlpha2 .getName () == null ) || (conversationRequestAlpha2 .getName ().trim ().isEmpty ())) {
1652
+ throw new IllegalArgumentException ("LLM name cannot be null or empty." );
1653
+ }
1654
+
1655
+ DaprProtos .ConversationRequestAlpha2 .Builder builder = DaprProtos .ConversationRequestAlpha2
1656
+ .newBuilder ()
1657
+ .setTemperature (conversationRequestAlpha2 .getTemperature ())
1658
+ .setScrubPii (conversationRequestAlpha2 .isScrubPii ())
1659
+ .setName (conversationRequestAlpha2 .getName ());
1660
+
1661
+ if (conversationRequestAlpha2 .getContextId () != null ) {
1662
+ builder .setContextId (conversationRequestAlpha2 .getContextId ());
1663
+ }
1664
+
1665
+ if (conversationRequestAlpha2 .getToolChoice () != null ) {
1666
+ builder .setToolChoice (conversationRequestAlpha2 .getToolChoice ());
1667
+ }
1668
+
1669
+ DaprProtos .ConversationRequestAlpha2 protoRequest = buildConversationRequestProto (conversationRequestAlpha2 ,
1670
+ builder );
1653
1671
1654
1672
Mono <DaprProtos .ConversationResponseAlpha2 > conversationResponseMono = Mono .deferContextual (
1655
1673
context -> this .createMono (
@@ -1666,38 +1684,41 @@ public Mono<ConversationResponseAlpha2> converseAlpha2(ConversationRequestAlpha2
1666
1684
}
1667
1685
}
1668
1686
1669
- private DaprProtos .ConversationRequestAlpha2 buildConversationRequestProto (ConversationRequestAlpha2 request ) {
1670
- DaprProtos .ConversationRequestAlpha2 .Builder builder = DaprProtos .ConversationRequestAlpha2
1671
- .newBuilder ()
1672
- .setTemperature (request .getTemperature ())
1673
- .setScrubPii (request .isScrubPii ())
1674
- .setName (request .getName ());
1675
-
1676
- if (request .getContextId () != null ) {
1677
- builder .setContextId (request .getContextId ());
1678
- }
1679
-
1680
- if (request .getToolChoice () != null ) {
1681
- builder .setToolChoice (request .getToolChoice ());
1682
- }
1683
-
1687
+ private DaprProtos .ConversationRequestAlpha2 buildConversationRequestProto (ConversationRequestAlpha2 request ,
1688
+ DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
1684
1689
if (request .getTools () != null ) {
1685
1690
buildConversationTools (request .getTools (), builder );
1686
1691
}
1687
1692
1688
- for (ConversationInputAlpha2 input : request .getInputs ()) {
1689
- DaprProtos .ConversationInputAlpha2 .Builder inputBuilder = DaprProtos .ConversationInputAlpha2
1690
- .newBuilder ()
1691
- .setScrubPii (input .isScrubPii ());
1693
+ if (request .getMetadata () != null ) {
1694
+ builder .putAllMetadata (request .getMetadata ());
1695
+ }
1692
1696
1693
- if (input .getMessages () != null ) {
1694
- for (ConversationMessage message : input .getMessages ()) {
1695
- DaprProtos .ConversationMessage protoMessage = buildConversationMessage (message );
1696
- inputBuilder .addMessages (protoMessage );
1697
+ if (request .getParameters () != null ) {
1698
+ Map <String , Any > parameters = request .getParameters ()
1699
+ .entrySet ().stream ()
1700
+ .collect (Collectors .toMap (
1701
+ Map .Entry ::getKey ,
1702
+ e -> Any .pack ((Message ) e .getValue ())
1703
+ ));
1704
+ builder .putAllParameters (parameters );
1705
+ }
1706
+
1707
+ if (request .getInputs () != null ) {
1708
+ for (ConversationInputAlpha2 input : request .getInputs ()) {
1709
+ DaprProtos .ConversationInputAlpha2 .Builder inputBuilder = DaprProtos .ConversationInputAlpha2
1710
+ .newBuilder ()
1711
+ .setScrubPii (input .isScrubPii ());
1712
+
1713
+ if (input .getMessages () != null ) {
1714
+ for (ConversationMessage message : input .getMessages ()) {
1715
+ DaprProtos .ConversationMessage protoMessage = buildConversationMessage (message );
1716
+ inputBuilder .addMessages (protoMessage );
1717
+ }
1697
1718
}
1698
- }
1699
1719
1700
- builder .addInputs (inputBuilder .build ());
1720
+ builder .addInputs (inputBuilder .build ());
1721
+ }
1701
1722
}
1702
1723
1703
1724
return builder .build ();
@@ -1707,19 +1728,24 @@ private void buildConversationTools(List<ConversationTools> tools,
1707
1728
DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
1708
1729
for (ConversationTools tool : tools ) {
1709
1730
ConversationFunction function = tool .getFunction ();
1710
-
1711
- Map <String , Any > protoParameters = function .getParameters ()
1712
- .entrySet ().stream ()
1713
- .collect (Collectors .toMap (
1714
- Map .Entry ::getKey ,
1715
- e -> Any .pack ((Message ) e .getValue ())
1716
- ));
1717
-
1718
- DaprProtos .ConversationToolsFunction protoFunction = DaprProtos .ConversationToolsFunction .newBuilder ()
1719
- .setName (function .getName ())
1720
- .setDescription (function .getDescription ())
1721
- .putAllParameters (protoParameters )
1722
- .build ();
1731
+
1732
+ DaprProtos .ConversationToolsFunction .Builder protoFunction = DaprProtos .ConversationToolsFunction .newBuilder ()
1733
+ .setName (function .getName ());
1734
+
1735
+ if (function .getDescription () != null ) {
1736
+ protoFunction .setDescription (function .getDescription ());
1737
+ }
1738
+
1739
+ if (function .getParameters () != null ) {
1740
+ Map <String , Any > functionParams = function .getParameters ()
1741
+ .entrySet ().stream ()
1742
+ .collect (Collectors .toMap (
1743
+ Map .Entry ::getKey ,
1744
+ e -> Any .pack ((Message ) e .getValue ())
1745
+ ));
1746
+
1747
+ protoFunction .putAllParameters (functionParams );
1748
+ }
1723
1749
1724
1750
builder .addTools (DaprProtos .ConversationTools .newBuilder ()
1725
1751
.setFunction (protoFunction )
@@ -1729,29 +1755,68 @@ private void buildConversationTools(List<ConversationTools> tools,
1729
1755
1730
1756
private DaprProtos .ConversationMessage buildConversationMessage (ConversationMessage message ) {
1731
1757
DaprProtos .ConversationMessage .Builder messageBuilder = DaprProtos .ConversationMessage .newBuilder ();
1732
-
1758
+
1733
1759
switch (message .getRole ()) {
1734
1760
case TOOL :
1735
- messageBuilder .setOfTool (DaprProtos .ConversationMessageOfTool .newBuilder ()
1736
- .setToolId (message .getToolId ()).setName (message .getName ())
1737
- .addAllContent (getConversationMessageContent (message )).build ());
1761
+ DaprProtos .ConversationMessageOfTool .Builder toolMessage =
1762
+ DaprProtos .ConversationMessageOfTool .newBuilder ();
1763
+ if (message .getName () != null ) {
1764
+ toolMessage .setName (message .getName ());
1765
+ }
1766
+ if (message .getContent () != null ) {
1767
+ toolMessage .addAllContent (getConversationMessageContent (message ));
1768
+ }
1769
+ if (message .getToolId () != null ) {
1770
+ toolMessage .setToolId (message .getToolId ());
1771
+ }
1772
+ messageBuilder .setOfTool (toolMessage );
1738
1773
break ;
1739
1774
case USER :
1740
- messageBuilder .setOfUser (DaprProtos .ConversationMessageOfUser .newBuilder ()
1741
- .setName (message .getName ()).addAllContent (getConversationMessageContent (message )).build ());
1775
+ DaprProtos .ConversationMessageOfUser .Builder userMessage =
1776
+ DaprProtos .ConversationMessageOfUser .newBuilder ();
1777
+ if (message .getName () != null ) {
1778
+ userMessage .setName (message .getName ());
1779
+ }
1780
+ if (message .getContent () != null ) {
1781
+ userMessage .addAllContent (getConversationMessageContent (message ));
1782
+ }
1783
+ messageBuilder .setOfUser (userMessage );
1742
1784
break ;
1743
1785
case ASSISTANT :
1744
- messageBuilder .setOfAssistant (DaprProtos .ConversationMessageOfAssistant .newBuilder ()
1745
- .setName (message .getName ()).addAllToolCalls (getConversationToolCalls (message ))
1746
- .addAllContent (getConversationMessageContent (message )).build ());
1786
+ DaprProtos .ConversationMessageOfAssistant .Builder assistantMessage =
1787
+ DaprProtos .ConversationMessageOfAssistant .newBuilder ();
1788
+ if (message .getName () != null ) {
1789
+ assistantMessage .setName (message .getName ());
1790
+ }
1791
+ if (message .getContent () != null ) {
1792
+ assistantMessage .addAllContent (getConversationMessageContent (message ));
1793
+ }
1794
+ if (message .getToolCalls () != null ) {
1795
+ assistantMessage .addAllToolCalls (getConversationToolCalls (message ));
1796
+ }
1797
+ messageBuilder .setOfAssistant (assistantMessage );
1747
1798
break ;
1748
1799
case DEVELOPER :
1749
- messageBuilder .setOfDeveloper (DaprProtos .ConversationMessageOfDeveloper .newBuilder ()
1750
- .setName (message .getName ()).addAllContent (getConversationMessageContent (message )).build ());
1800
+ DaprProtos .ConversationMessageOfDeveloper .Builder developerMessage =
1801
+ DaprProtos .ConversationMessageOfDeveloper .newBuilder ();
1802
+ if (message .getName () != null ) {
1803
+ developerMessage .setName (message .getName ());
1804
+ }
1805
+ if (message .getContent () != null ) {
1806
+ developerMessage .addAllContent (getConversationMessageContent (message ));
1807
+ }
1808
+ messageBuilder .setOfDeveloper (developerMessage );
1751
1809
break ;
1752
1810
case SYSTEM :
1753
- messageBuilder .setOfSystem (DaprProtos .ConversationMessageOfSystem .newBuilder ()
1754
- .setName (message .getName ()).addAllContent (getConversationMessageContent (message )).build ());
1811
+ DaprProtos .ConversationMessageOfSystem .Builder systemMessage =
1812
+ DaprProtos .ConversationMessageOfSystem .newBuilder ();
1813
+ if (message .getName () != null ) {
1814
+ systemMessage .setName (message .getName ());
1815
+ }
1816
+ if (message .getContent () != null ) {
1817
+ systemMessage .addAllContent (getConversationMessageContent (message ));
1818
+ }
1819
+ messageBuilder .setOfSystem (systemMessage );
1755
1820
break ;
1756
1821
default :
1757
1822
throw new IllegalArgumentException ("No role of type " + message .getRole () + " found" );
@@ -1832,16 +1897,6 @@ private List<DaprProtos.ConversationToolCalls> getConversationToolCalls(
1832
1897
return conversationToolCalls ;
1833
1898
}
1834
1899
1835
- private void validateConversationRequestAlpha2 (ConversationRequestAlpha2 conversationRequest ) {
1836
- if ((conversationRequest .getName () == null ) || (conversationRequest .getName ().trim ().isEmpty ())) {
1837
- throw new IllegalArgumentException ("LLM name cannot be null or empty." );
1838
- }
1839
-
1840
- if ((conversationRequest .getInputs () == null ) || (conversationRequest .getInputs ().isEmpty ())) {
1841
- throw new IllegalArgumentException ("Conversation inputs cannot be null or empty." );
1842
- }
1843
- }
1844
-
1845
1900
private DaprMetadata buildDaprMetadata (DaprProtos .GetMetadataResponse response ) throws IOException {
1846
1901
String id = response .getId ();
1847
1902
String runtimeVersion = response .getRuntimeVersion ();
0 commit comments