@@ -39,8 +39,11 @@ interface LanguageModel : EventTarget {
3939 static Promise<Availability> availability(optional LanguageModelCreateCoreOptions options = {});
4040 static Promise<LanguageModelParams?> params();
4141
42+ // The return type from prompt() method and those alike.
43+ typedef (DOMString or sequence<LanguageModelMessageContent>) LanguageModelPromptResult;
44+
4245 // These will throw "NotSupportedError" DOMExceptions if role = "system"
43- Promise<DOMString > prompt(
46+ Promise<LanguageModelPromptResult > prompt(
4447 LanguageModelPrompt input,
4548 optional LanguageModelPromptOptions options = {}
4649 );
@@ -80,13 +83,11 @@ interface LanguageModelParams {
8083callback LanguageModelToolFunction = Promise<DOMString> (any... arguments);
8184
8285// A description of a tool call that a language model can invoke.
83- dictionary LanguageModelTool {
86+ dictionary LanguageModelToolDeclaration {
8487 required DOMString name;
8588 required DOMString description;
8689 // JSON schema for the input parameters.
8790 required object inputSchema;
88- // The function to be invoked by user agent on behalf of language model.
89- required LanguageModelToolFunction execute;
9091};
9192
9293dictionary LanguageModelCreateCoreOptions {
@@ -97,7 +98,7 @@ dictionary LanguageModelCreateCoreOptions {
9798
9899 sequence<LanguageModelExpected> expectedInputs;
99100 sequence<LanguageModelExpected> expectedOutputs;
100- sequence<LanguageModelTool > tools;
101+ sequence<LanguageModelToolDeclaration > tools;
101102};
102103
103104dictionary LanguageModelCreateOptions : LanguageModelCreateCoreOptions {
@@ -148,16 +149,52 @@ dictionary LanguageModelMessageContent {
148149 required LanguageModelMessageValue value;
149150};
150151
151- enum LanguageModelMessageRole { "system", "user", "assistant" };
152+ enum LanguageModelMessageRole { "system", "user", "assistant", "tool-call", "tool-response" };
152153
153- enum LanguageModelMessageType { "text", "image", "audio" };
154+ enum LanguageModelMessageType { "text", "image", "audio","tool-call", "tool-response" };
154155
155156typedef (
156157 ImageBitmapSource
157158 or AudioBuffer
158159 or BufferSource
159160 or DOMString
161+ or LanguageModelToolCall
162+ or LanguageModelToolResponse
160163) LanguageModelMessageValue;
164+
165+ // The definitions of `LanguageModelToolCall` and `LanguageModelToolResponse` values
166+ enum LanguageModelToolResultType { "text", "image", "audio", "object" };
167+
168+ dictionary LanguageModelToolResultContent {
169+ required LanguageModelToolResultType type;
170+ required any value;
171+ };
172+
173+ // Represents a tool call requested by the language model.
174+ dictionary LanguageModelToolCall {
175+ required DOMString callID;
176+ required DOMString name;
177+ object arguments;
178+ };
179+
180+ // Successful tool execution result.
181+ dictionary LanguageModelToolSuccess {
182+ required DOMString callID;
183+ required DOMString name;
184+ required sequence<LanguageModelToolResultContent> result;
185+ };
186+
187+ // Failed tool execution result.
188+ dictionary LanguageModelToolError {
189+ required DOMString callID;
190+ required DOMString name;
191+ required DOMString errorMessage;
192+ };
193+
194+ // The response from executing a tool call - either success or error.
195+ typedef (LanguageModelToolSuccess or LanguageModelToolError) LanguageModelToolResponse;
196+
197+
161198</xmp>
162199
163200<h3 id="prompt-processing">Prompt processing</h3>
0 commit comments