Skip to content
This repository has been archived by the owner on Oct 10, 2024. It is now read-only.

Commit

Permalink
Add tool call id in TS and example for v3 tokenization (#76)
Browse files Browse the repository at this point in the history
Co-authored-by: Harizo Rajaona <[email protected]>
  • Loading branch information
fuegoio and hrjn authored May 23, 2024
1 parent 2fcc564 commit 7f1c9ad
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 23 deletions.
56 changes: 37 additions & 19 deletions examples/function_calling.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@ const apiKey = process.env.MISTRAL_API_KEY;
const data = {
transactionId: ['T1001', 'T1002', 'T1003', 'T1004', 'T1005'],
customerId: ['C001', 'C002', 'C003', 'C002', 'C001'],
paymentAmount: [125.50, 89.99, 120.00, 54.30, 210.20],
paymentAmount: [125.5, 89.99, 120.0, 54.3, 210.2],
paymentDate: [
'2021-10-05', '2021-10-06', '2021-10-07', '2021-10-05', '2021-10-08',
'2021-10-05',
'2021-10-06',
'2021-10-07',
'2021-10-05',
'2021-10-08',
],
paymentStatus: ['Paid', 'Unpaid', 'Paid', 'Paid', 'Pending'],
};
Expand All @@ -22,7 +26,7 @@ const data = {
function retrievePaymentStatus({data, transactionId}) {
const transactionIndex = data.transactionId.indexOf(transactionId);
if (transactionIndex != -1) {
return JSON.stringify({status: data.payment_status[transactionIndex]});
return JSON.stringify({status: data.paymentStatus[transactionIndex]});
} else {
return JSON.stringify({status: 'error - transaction id not found.'});
}
Expand Down Expand Up @@ -60,8 +64,8 @@ const tools = [
parameters: {
type: 'object',
required: ['transactionId'],
properties: {transactionId:
{type: 'string', description: 'The transaction id.'},
properties: {
transactionId: {type: 'string', description: 'The transaction id.'},
},
},
},
Expand All @@ -74,38 +78,43 @@ const tools = [
parameters: {
type: 'object',
required: ['transactionId'],
properties: {transactionId:
{type: 'string', description: 'The transaction id.'},
properties: {
transactionId: {type: 'string', description: 'The transaction id.'},
},
},
},
},
];

const model = 'mistral-small-latest';

const model = 'mistral-large';

const client = new MistralClient(apiKey, 'https://api-2.aurocloud.net');
const client = new MistralClient(apiKey);

const messages = [
{role: 'user', content: 'What\'s the status of my transaction?'},
];

let response = await client.chat({
model: model, messages: messages, tools: tools,
model: model,
messages: messages,
tools: tools,
});


console.log(response.choices[0].message.content);

messages.push(
{role: 'assistant', content: response.choices[0].message.content},
);
messages.push({
role: 'assistant',
content: response.choices[0].message.content,
});
messages.push({role: 'user', content: 'My transaction ID is T1001.'});

response = await client.chat({model: model, messages: messages, tools: tools});
response = await client.chat({
model: model,
messages: messages,
tools: tools,
});

const toolCall = response.choices[0].message.toolCalls[0];
const toolCall = response.choices[0].message.tool_calls[0];
const functionName = toolCall.function.name;
const functionParams = JSON.parse(toolCall.function.arguments);

Expand All @@ -115,8 +124,17 @@ console.log(`functionParams: ${toolCall.function.arguments}`);
const functionResult = namesToFunctions[functionName](functionParams);

messages.push(response.choices[0].message);
messages.push({role: 'tool', name: functionName, content: functionResult});
messages.push({
role: 'tool',
name: functionName,
content: functionResult,
tool_call_id: toolCall.id,
});

response = await client.chat({model: model, messages: messages, tools: tools});
response = await client.chat({
model: model,
messages: messages,
tools: tools,
});

console.log(response.choices[0].message.content);
15 changes: 11 additions & 4 deletions src/client.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,17 @@ declare module "@mistralai/mistralai" {
usage: TokenUsage;
}

export interface Message {
role: string;
content: string | string[];
}
export type Message =
| {
role: "system" | "user" | "assistant";
content: string | string[];
}
| {
role: "tool";
content: string | string[];
name: string;
tool_call_id: string;
};

export interface Tool {
type: "function";
Expand Down

0 comments on commit 7f1c9ad

Please sign in to comment.