1
1
import {
2
2
ChatCompletionAssistantMessageParam ,
3
3
ChatCompletionCreateParamsNonStreaming ,
4
+ ChatCompletionFunctionMessageParam ,
4
5
ChatCompletionMessageParam ,
5
6
ChatCompletionMessageToolCall ,
6
7
ChatCompletionRole ,
@@ -75,6 +76,10 @@ function isToolMessage(message: ChatCompletionMessageParam): message is ChatComp
75
76
return message . role === 'tool'
76
77
}
77
78
79
+ function isFunctionMessage ( message : ChatCompletionMessageParam ) : message is ChatCompletionFunctionMessageParam {
80
+ return message . role === 'tool'
81
+ }
82
+
78
83
function isAssistantMessage ( message : ChatCompletionMessageParam ) : message is ChatCompletionAssistantMessageParam {
79
84
return message . role === 'assistant'
80
85
}
@@ -99,6 +104,22 @@ export const mapOpenAIMessagesToMessages = (messages: ChatCompletionMessageParam
99
104
}
100
105
}
101
106
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
+
102
123
if ( isAssistantMessage ( message ) ) {
103
124
const toolCalls : PromptMessage [ 'toolCalls' ] =
104
125
message . tool_calls ?. map ( ( toolCall ) => {
0 commit comments