Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into bug-sc-62423-fred-s…
Browse files Browse the repository at this point in the history
…ervice-error-missing-toolcallid-or
  • Loading branch information
hoangvvo committed Nov 9, 2024
2 parents 94720c0 + 7bd27c4 commit 14f7748
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 7 deletions.
2 changes: 1 addition & 1 deletion javascript/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "@firefliesai/llm-sdk",
"version": "0.1.5",
"version": "0.1.6",
"description": "A unified LLM SDK",
"scripts": {
"generate": "npx @hey-api/openapi-ts",
Expand Down
5 changes: 1 addition & 4 deletions javascript/src/utils/stream.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,7 @@ export function guessDeltaIndex(
} else {
// we won't be able to reliably match tool calls
// because there can be multiple tool calls with the same tool name
return (
contentDelta.part.type === "tool-call" &&
part.toolName === contentDelta.part.toolName
);
return false;
}
});
}
Expand Down
46 changes: 45 additions & 1 deletion javascript/test/test-language-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ export function testLanguageModel(languageModel: LanguageModel) {
content: [
{
type: "text",
text: "Register a user. You must always fill in random details for all fields. Do not ask for real information.",
text: 'Hi, create a user with the id "a1b2c3", name "John Doe", email "[email protected]", birthDate "1990-05-15", age 34, isActive true, role "user", accountBalance 500.75, phoneNumber "+1234567890123", tags ["developer", "gamer"], and lastLogin "2024-11-09T10:30:00Z".',
},
],
},
Expand Down Expand Up @@ -518,6 +518,50 @@ export function testParallelToolCalls(languageModel: LanguageModel) {
true,
);
});

test("stream parallel tool calls of same name", async (t) => {
const response = languageModel.stream({
messages: [
{
role: "user",
content: [
{
type: "text",
text: "Get me the weather in Boston and the weather in New York.",
},
],
},
],
tools,
});

let current = await response.next();
while (!current.done) {
log(current.value);
current = await response.next();
}

log(current.value);

const toolCallParts = current.value.content.filter(
(part) => part.type === "tool-call",
);

t.assert.equal(toolCallParts.length, 2);
const weatherCall1 = toolCallParts.find(
(part) =>
part.toolName === "get_weather" &&
(part.args?.["location"] as string).includes("Boston"),
);
const weatherCall2 = toolCallParts.find(
(part) =>
part.toolName === "get_weather" &&
(part.args?.["location"] as string).includes("New York"),
);

t.assert.equal(!!weatherCall1, true);
t.assert.equal(!!weatherCall2, true);
});
}

export function log(value: ModelResponse | PartialModelResponse) {
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 14f7748

Please sign in to comment.