@@ -28,7 +28,11 @@ import {
2828} from '../userTypes/index.js'
2929import { BaseHandler } from './base.js'
3030import { InputError , InvariantError , MessageRole } from './types.js'
31- import { consoleWarn , getTimestamp } from './utils.js'
31+ import {
32+ consoleWarn ,
33+ convertMessageContentToString ,
34+ getTimestamp ,
35+ } from './utils.js'
3236
3337type CohereMessageRole = 'CHATBOT' | 'SYSTEM' | 'USER' | 'TOOL'
3438
@@ -41,6 +45,8 @@ const convertRole = (role: MessageRole): CohereMessageRole => {
4145 return 'TOOL'
4246 } else if ( role === 'user' ) {
4347 return 'USER'
48+ } else if ( role === 'developer' ) {
49+ return 'SYSTEM'
4450 } else {
4551 throw new InputError ( `Unknown role: ${ role } ` )
4652 }
@@ -259,12 +265,13 @@ const toToolResult = (
259265 )
260266 }
261267
268+ const tollCallContentStr = convertMessageContentToString ( toolMessage . content )
262269 const toolResult : ToolResult = {
263270 call : {
264271 name : toolCall . function . name ,
265272 parameters : JSON . parse ( toolCall . function . arguments ) ,
266273 } ,
267- outputs : [ JSON . parse ( toolMessage . content ) ] ,
274+ outputs : [ JSON . parse ( tollCallContentStr ) ] ,
268275 }
269276 return toolResult
270277}
@@ -318,9 +325,10 @@ export const convertMessages = (
318325 } )
319326 }
320327 } else if ( message . role === 'assistant' ) {
328+ const messageContentStr = convertMessageContentToString ( message . content )
321329 chatHistory . push ( {
322330 role : convertRole ( message . role ) ,
323- message : message . content ?? '' ,
331+ message : messageContentStr ,
324332 toolCalls : message . tool_calls ?. map ( ( toolCall ) => {
325333 return {
326334 name : toolCall . function . name ,
@@ -567,6 +575,7 @@ export class CohereHandler extends BaseHandler<CohereModel> {
567575 logprobs : null ,
568576 message : {
569577 role : 'assistant' ,
578+ refusal : null , // openai requires this field, fill in if Cohere ever supports
570579 content : response . text ,
571580 tool_calls : toolCalls ,
572581 } ,
0 commit comments