11using Liquid . Core . Entities ;
22using Liquid . Core . Interfaces ;
33using Liquid . Core . Settings ;
4- using Azure . AI . OpenAI ;
4+ using OpenAI . Chat ;
55using System . Diagnostics . CodeAnalysis ;
66
77namespace Liquid . ChatCompletions . OpenAi
@@ -27,26 +27,24 @@ public async Task<ChatCompletionResult> FunctionCalling(ChatMessages messages, L
2727 {
2828 var client = _factory . GetOpenAIClient ( settings . ClientId ) ;
2929
30- var requestMessages = new List < ChatRequestMessage > ( ) ;
30+ var requestMessages = new List < OpenAI . Chat . ChatMessage > ( ) ;
3131
3232 messages . Messages . ForEach ( m => requestMessages . Add ( MapChatRequestMessage ( m ) ) ) ;
3333
3434 var option = MapChatCompletionOptions ( requestMessages , settings ) ;
3535
36- functions . ForEach ( f => option . Functions . Add ( GetDefinition ( f ) ) ) ;
36+ functions . ForEach ( f => option . Tools . Add ( ChatTool . CreateFunctionTool ( f . Name , f . Description , f . Parameters ) ) ) ;
3737
38- var responseWithoutStream = await client . GetChatCompletionsAsync ( option , new CancellationToken ( ) ) ;
39-
40- var response = responseWithoutStream . Value . Choices [ 0 ] . Message . FunctionCall == null ?
41- null : responseWithoutStream . Value . Choices [ 0 ] . Message . FunctionCall . Arguments ;
38+ var responseWithoutStream = await client . CompleteChatAsync ( requestMessages , option ) ;
39+ var response = responseWithoutStream . Value . Content [ 0 ] . Text ;
4240
4341 var result = new ChatCompletionResult ( )
4442 {
45- FinishReason = responseWithoutStream . Value . Choices [ 0 ] ? . FinishReason ? . ToString ( ) ,
43+ FinishReason = responseWithoutStream . Value . FinishReason . ToString ( ) ,
4644 Content = response ,
47- Usage = responseWithoutStream . Value . Usage . TotalTokens ,
48- PromptUsage = responseWithoutStream . Value . Usage . PromptTokens ,
49- CompletionUsage = responseWithoutStream . Value . Usage . CompletionTokens ,
45+ Usage = responseWithoutStream . Value . Usage . TotalTokenCount ,
46+ PromptUsage = responseWithoutStream . Value . Usage . InputTokenCount ,
47+ CompletionUsage = responseWithoutStream . Value . Usage . OutputTokenCount ,
5048 } ;
5149
5250 return result ;
@@ -61,15 +59,16 @@ public async Task<ChatCompletionResult> ChatCompletions(string content, string p
6159
6260 var option = MapChatCompletionOptions ( messages , settings ) ;
6361
64- var responseWithoutStream = await client . GetChatCompletionsAsync ( option , new CancellationToken ( ) ) ;
62+ var responseWithoutStream = await client . CompleteChatAsync ( messages , option ) ;
63+ var response = responseWithoutStream . Value . Content [ 0 ] . Text ;
6564
6665 var result = new ChatCompletionResult ( )
6766 {
68- FinishReason = responseWithoutStream . Value . Choices [ 0 ] ? . FinishReason ? . ToString ( ) ,
69- Content = responseWithoutStream . Value . Choices [ 0 ] ? . Message ? . Content ,
70- Usage = responseWithoutStream . Value . Usage . TotalTokens ,
71- PromptUsage = responseWithoutStream . Value . Usage . PromptTokens ,
72- CompletionUsage = responseWithoutStream . Value . Usage . CompletionTokens ,
67+ FinishReason = responseWithoutStream . Value . FinishReason . ToString ( ) ,
68+ Content = response ,
69+ Usage = responseWithoutStream . Value . Usage . TotalTokenCount ,
70+ PromptUsage = responseWithoutStream . Value . Usage . InputTokenCount ,
71+ CompletionUsage = responseWithoutStream . Value . Usage . OutputTokenCount ,
7372 } ;
7473
7574 return result ;
@@ -78,36 +77,29 @@ public async Task<ChatCompletionResult> ChatCompletions(string content, string p
7877 ///<inheritdoc/>
7978 public async Task < ReadOnlyMemory < float > > GetEmbeddings ( string description , string modelName , string clientId )
8079 {
81- var client = _factory . GetOpenAIClient ( clientId ) ;
80+ // var client = _factory.GetOpenAIClient(clientId);
8281
83- EmbeddingsOptions embeddingsOptions = new ( modelName , new string [ ] { description } ) ;
82+ //EmbeddingGenerationOptions embeddingsOptions = new(modelName, new string[] { description });
8483
85- var embeddings = await client . GetEmbeddingsAsync ( embeddingsOptions ) ;
84+ // var embeddings = await client.(embeddingsOptions);
8685
87- return embeddings . Value . Data [ 0 ] . Embedding ;
88- }
86+ //return embeddings.Value.Data[0].Embedding;
8987
90- private FunctionDefinition GetDefinition ( FunctionBody function )
91- {
92- return new FunctionDefinition ( )
93- {
94- Name = function . Name ,
95- Description = function . Description ,
96- Parameters = function . Parameters ,
97- } ;
88+ throw new NotImplementedException ( ) ;
9889 }
9990
91+
10092 /// <summary>
10193 /// get chat messages for a chat completions request.
10294 /// </summary>
10395 /// <param name="content">content of the user message</param>
10496 /// <param name="prompt">prompt message</param>
10597 /// <param name="chatHistory">chat context messages</param>
106- private List < ChatRequestMessage > GetChatMessagesAsync ( string content , string prompt , ChatMessages ? chatHistory = null )
98+ private List < OpenAI . Chat . ChatMessage > GetChatMessagesAsync ( string content , string prompt , ChatMessages ? chatHistory = null )
10799 {
108- var messages = new List < ChatRequestMessage >
100+ var messages = new List < OpenAI . Chat . ChatMessage >
109101 {
110- new ChatRequestSystemMessage ( prompt )
102+ new SystemChatMessage ( prompt )
111103 } ;
112104
113105 if ( chatHistory ? . Messages != null && chatHistory . Messages . Count > 0 )
@@ -118,7 +110,7 @@ private List<ChatRequestMessage> GetChatMessagesAsync(string content, string pro
118110 }
119111 }
120112
121- messages . Add ( new ChatRequestUserMessage ( content ) ) ;
113+ messages . Add ( new UserChatMessage ( content ) ) ;
122114
123115 return messages ;
124116 }
@@ -128,19 +120,19 @@ private List<ChatRequestMessage> GetChatMessagesAsync(string content, string pro
128120 /// </summary>
129121 /// <param name="message">chat message</param>
130122 /// <exception cref="ArgumentNullException"></exception>
131- private ChatRequestMessage MapChatRequestMessage ( ChatMessage message )
123+ private OpenAI . Chat . ChatMessage MapChatRequestMessage ( Core . Entities . ChatMessage message )
132124 {
133- ChatRequestMessage chatRequestMessage = null ;
125+ OpenAI . Chat . ChatMessage chatRequestMessage = null ;
134126 switch ( message . Role . ToLower ( ) )
135127 {
136128 case "system" :
137- chatRequestMessage = new ChatRequestSystemMessage ( message . Content ) ;
129+ chatRequestMessage = new SystemChatMessage ( message . Content ) ;
138130 break ;
139131 case "assistant" :
140- chatRequestMessage = new ChatRequestAssistantMessage ( message . Content ) ;
132+ chatRequestMessage = new AssistantChatMessage ( message . Content ) ;
141133 break ;
142134 case "user" :
143- chatRequestMessage = new ChatRequestUserMessage ( message . Content ) ;
135+ chatRequestMessage = new UserChatMessage ( message . Content ) ;
144136 break ;
145137 default :
146138 break ;
@@ -160,15 +152,16 @@ private ChatRequestMessage MapChatRequestMessage(ChatMessage message)
160152 /// <param name="messages">Chat messages </param>
161153 /// <param name="settings">Chat completions settings</param>
162154 /// <returns></returns>
163- private ChatCompletionsOptions MapChatCompletionOptions ( List < ChatRequestMessage > messages , CompletionsSettings settings )
155+ private ChatCompletionOptions MapChatCompletionOptions ( List < OpenAI . Chat . ChatMessage > messages , CompletionsSettings settings )
164156 {
165- return new ChatCompletionsOptions ( settings . DeploymentName , messages )
157+ return new ChatCompletionOptions ( )
166158 {
167159 Temperature = settings . Temperature ,
168- MaxTokens = settings . MaxTokens ,
169- NucleusSamplingFactor = settings . NucleusSamplingFactor ,
160+ MaxOutputTokenCount = settings . MaxTokens ,
161+ TopP = settings . NucleusSamplingFactor ,
170162 FrequencyPenalty = settings . FrequencyPenalty ,
171- PresencePenalty = settings . PresencePenalty ,
163+ PresencePenalty = settings . PresencePenalty
164+
172165 } ;
173166 }
174167 }
0 commit comments