@@ -1648,8 +1648,26 @@ private void validateConversationRequest(ConversationRequest conversationRequest
16481648 @ Override
16491649 public Mono <ConversationResponseAlpha2 > converseAlpha2 (ConversationRequestAlpha2 conversationRequestAlpha2 ) {
16501650 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 );
16531671
16541672 Mono <DaprProtos .ConversationResponseAlpha2 > conversationResponseMono = Mono .deferContextual (
16551673 context -> this .createMono (
@@ -1666,38 +1684,41 @@ public Mono<ConversationResponseAlpha2> converseAlpha2(ConversationRequestAlpha2
16661684 }
16671685 }
16681686
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 ) {
16841689 if (request .getTools () != null ) {
16851690 buildConversationTools (request .getTools (), builder );
16861691 }
16871692
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+ }
16921696
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+ }
16971718 }
1698- }
16991719
1700- builder .addInputs (inputBuilder .build ());
1720+ builder .addInputs (inputBuilder .build ());
1721+ }
17011722 }
17021723
17031724 return builder .build ();
@@ -1707,19 +1728,24 @@ private void buildConversationTools(List<ConversationTools> tools,
17071728 DaprProtos .ConversationRequestAlpha2 .Builder builder ) {
17081729 for (ConversationTools tool : tools ) {
17091730 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+ }
17231749
17241750 builder .addTools (DaprProtos .ConversationTools .newBuilder ()
17251751 .setFunction (protoFunction )
@@ -1729,29 +1755,68 @@ private void buildConversationTools(List<ConversationTools> tools,
17291755
17301756 private DaprProtos .ConversationMessage buildConversationMessage (ConversationMessage message ) {
17311757 DaprProtos .ConversationMessage .Builder messageBuilder = DaprProtos .ConversationMessage .newBuilder ();
1732-
1758+
17331759 switch (message .getRole ()) {
17341760 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 );
17381773 break ;
17391774 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 );
17421784 break ;
17431785 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 );
17471798 break ;
17481799 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 );
17511809 break ;
17521810 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 );
17551820 break ;
17561821 default :
17571822 throw new IllegalArgumentException ("No role of type " + message .getRole () + " found" );
@@ -1832,16 +1897,6 @@ private List<DaprProtos.ConversationToolCalls> getConversationToolCalls(
18321897 return conversationToolCalls ;
18331898 }
18341899
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-
18451900 private DaprMetadata buildDaprMetadata (DaprProtos .GetMetadataResponse response ) throws IOException {
18461901 String id = response .getId ();
18471902 String runtimeVersion = response .getRuntimeVersion ();
0 commit comments