11import {
22 ChatCompletionAssistantMessageParam ,
33 ChatCompletionCreateParamsNonStreaming ,
4+ ChatCompletionFunctionMessageParam ,
45 ChatCompletionMessageParam ,
56 ChatCompletionMessageToolCall ,
67 ChatCompletionRole ,
@@ -75,6 +76,10 @@ function isToolMessage(message: ChatCompletionMessageParam): message is ChatComp
7576 return message . role === 'tool'
7677}
7778
79+ function isFunctionMessage ( message : ChatCompletionMessageParam ) : message is ChatCompletionFunctionMessageParam {
80+ return message . role === 'tool'
81+ }
82+
7883function isAssistantMessage ( message : ChatCompletionMessageParam ) : message is ChatCompletionAssistantMessageParam {
7984 return message . role === 'assistant'
8085}
@@ -99,6 +104,22 @@ export const mapOpenAIMessagesToMessages = (messages: ChatCompletionMessageParam
99104 }
100105 }
101106
107+ if ( isFunctionMessage ( message ) ) {
108+ if ( ! message . name ) {
109+ throw new Error ( 'Function call missing name' )
110+ }
111+
112+ if ( ! message . content ) {
113+ throw new Error ( 'Tool message missing content' )
114+ }
115+ return {
116+ role : 'TOOL' ,
117+ content : message . content ,
118+ toolCallId : message . name ,
119+ toolCalls : null
120+ }
121+ }
122+
102123 if ( isAssistantMessage ( message ) ) {
103124 const toolCalls : PromptMessage [ 'toolCalls' ] =
104125 message . tool_calls ?. map ( ( toolCall ) => {
0 commit comments