langchain 0.0.183 → 0.0.185

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/agents/format_scratchpad/openai_tools.cjs +1 -0
  2. package/agents/format_scratchpad/openai_tools.d.ts +1 -0
  3. package/agents/format_scratchpad/openai_tools.js +1 -0
  4. package/dist/agents/agent.cjs +19 -13
  5. package/dist/agents/agent.d.ts +16 -17
  6. package/dist/agents/agent.js +17 -11
  7. package/dist/agents/executor.d.ts +10 -16
  8. package/dist/agents/format_scratchpad/openai_tools.cjs +19 -0
  9. package/dist/agents/format_scratchpad/openai_tools.d.ts +3 -0
  10. package/dist/agents/format_scratchpad/openai_tools.js +15 -0
  11. package/dist/agents/openai/output_parser.cjs +66 -1
  12. package/dist/agents/openai/output_parser.d.ts +26 -2
  13. package/dist/agents/openai/output_parser.js +65 -1
  14. package/dist/agents/structured_chat/index.cjs +1 -2
  15. package/dist/agents/structured_chat/index.d.ts +2 -0
  16. package/dist/agents/structured_chat/index.js +1 -2
  17. package/dist/agents/toolkits/aws_sfn.d.ts +1 -4
  18. package/dist/agents/toolkits/conversational_retrieval/openai_functions.d.ts +1 -1
  19. package/dist/agents/toolkits/json/json.d.ts +1 -4
  20. package/dist/agents/toolkits/openapi/openapi.d.ts +1 -4
  21. package/dist/agents/toolkits/sql/sql.d.ts +1 -4
  22. package/dist/agents/toolkits/vectorstore/vectorstore.d.ts +2 -8
  23. package/dist/agents/types.cjs +8 -1
  24. package/dist/agents/types.d.ts +11 -5
  25. package/dist/agents/types.js +6 -0
  26. package/dist/document_loaders/fs/pdf.cjs +17 -3
  27. package/dist/document_loaders/fs/pdf.js +17 -3
  28. package/dist/document_loaders/web/apify_dataset.cjs +12 -6
  29. package/dist/document_loaders/web/apify_dataset.d.ts +9 -6
  30. package/dist/document_loaders/web/apify_dataset.js +12 -6
  31. package/dist/document_loaders/web/pdf.cjs +17 -3
  32. package/dist/document_loaders/web/pdf.js +17 -3
  33. package/dist/document_loaders/web/puppeteer.cjs +37 -0
  34. package/dist/document_loaders/web/puppeteer.d.ts +17 -0
  35. package/dist/document_loaders/web/puppeteer.js +37 -0
  36. package/dist/experimental/openai_assistant/index.cjs +221 -0
  37. package/dist/experimental/openai_assistant/index.d.ts +36 -0
  38. package/dist/experimental/openai_assistant/index.js +217 -0
  39. package/dist/experimental/openai_assistant/schema.cjs +2 -0
  40. package/dist/experimental/openai_assistant/schema.d.ts +12 -0
  41. package/dist/experimental/openai_assistant/schema.js +1 -0
  42. package/dist/experimental/plan_and_execute/agent_executor.cjs +28 -2
  43. package/dist/experimental/plan_and_execute/agent_executor.d.ts +10 -3
  44. package/dist/experimental/plan_and_execute/agent_executor.js +26 -1
  45. package/dist/experimental/plan_and_execute/prompt.d.ts +2 -1
  46. package/dist/load/import_map.cjs +4 -2
  47. package/dist/load/import_map.d.ts +2 -0
  48. package/dist/load/import_map.js +2 -0
  49. package/dist/prompts/chat.cjs +22 -1
  50. package/dist/prompts/chat.d.ts +1 -0
  51. package/dist/prompts/chat.js +22 -1
  52. package/dist/schema/index.d.ts +1 -0
  53. package/dist/tools/convert_to_openai.cjs +14 -2
  54. package/dist/tools/convert_to_openai.d.ts +1 -0
  55. package/dist/tools/convert_to_openai.js +11 -0
  56. package/dist/tools/index.cjs +2 -1
  57. package/dist/tools/index.d.ts +1 -1
  58. package/dist/tools/index.js +1 -1
  59. package/dist/vectorstores/momento_vector_index.cjs +1 -1
  60. package/dist/vectorstores/momento_vector_index.js +1 -1
  61. package/dist/vectorstores/pinecone.cjs +4 -1
  62. package/dist/vectorstores/pinecone.d.ts +2 -1
  63. package/dist/vectorstores/pinecone.js +4 -1
  64. package/experimental/openai_assistant.cjs +1 -0
  65. package/experimental/openai_assistant.d.ts +1 -0
  66. package/experimental/openai_assistant.js +1 -0
  67. package/package.json +24 -8
@@ -0,0 +1,217 @@
1
+ import { OpenAI as OpenAIClient } from "openai";
2
+ import { Runnable } from "../../schema/runnable/base.js";
3
+ import { sleep } from "../../util/time.js";
4
+ import { StructuredTool } from "../../tools/base.js";
5
+ import { formatToOpenAIAssistantTool } from "../../tools/convert_to_openai.js";
6
+ export class OpenAIAssistantRunnable extends Runnable {
7
+ constructor(fields) {
8
+ super(fields);
9
+ Object.defineProperty(this, "lc_namespace", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: ["langchain", "experimental", "openai_assistant"]
14
+ });
15
+ Object.defineProperty(this, "client", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ Object.defineProperty(this, "assistantId", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ Object.defineProperty(this, "pollIntervalMs", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: 1000
32
+ });
33
+ Object.defineProperty(this, "asAgent", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: void 0
38
+ });
39
+ this.client = fields.client ?? new OpenAIClient(fields?.clientOptions);
40
+ this.assistantId = fields.assistantId;
41
+ this.asAgent = fields.asAgent ?? this.asAgent;
42
+ }
43
+ static async createAssistant({ model, name, instructions, tools, client, clientOptions, asAgent, pollIntervalMs, }) {
44
+ const formattedTools = tools?.map((tool) => {
45
+ // eslint-disable-next-line no-instanceof/no-instanceof
46
+ if (tool instanceof StructuredTool) {
47
+ return formatToOpenAIAssistantTool(tool);
48
+ }
49
+ return tool;
50
+ }) ?? [];
51
+ const oaiClient = client ?? new OpenAIClient(clientOptions);
52
+ const assistant = await oaiClient.beta.assistants.create({
53
+ name,
54
+ instructions,
55
+ tools: formattedTools,
56
+ model,
57
+ });
58
+ return new this({
59
+ client: oaiClient,
60
+ assistantId: assistant.id,
61
+ asAgent,
62
+ pollIntervalMs,
63
+ });
64
+ }
65
+ async invoke(input, _options) {
66
+ let run;
67
+ if (this.asAgent && input.steps && input.steps.length > 0) {
68
+ const parsedStepsInput = await this._parseStepsInput(input);
69
+ run = await this.client.beta.threads.runs.submitToolOutputs(parsedStepsInput.threadId, parsedStepsInput.runId, {
70
+ tool_outputs: parsedStepsInput.toolOutputs,
71
+ });
72
+ }
73
+ else if (!("threadId" in input)) {
74
+ const thread = {
75
+ messages: [
76
+ {
77
+ role: "user",
78
+ content: input.content,
79
+ file_ids: input.fileIds,
80
+ metadata: input.messagesMetadata,
81
+ },
82
+ ],
83
+ metadata: input.threadMetadata,
84
+ };
85
+ run = await this._createThreadAndRun({
86
+ ...input,
87
+ thread,
88
+ });
89
+ }
90
+ else if (!("runId" in input)) {
91
+ await this.client.beta.threads.messages.create(input.threadId, {
92
+ content: input.content,
93
+ role: "user",
94
+ file_ids: input.file_ids,
95
+ metadata: input.messagesMetadata,
96
+ });
97
+ run = await this._createRun(input);
98
+ }
99
+ else {
100
+ // Submitting tool outputs to an existing run, outside the AgentExecutor
101
+ // framework.
102
+ run = await this.client.beta.threads.runs.submitToolOutputs(input.runId, input.threadId, {
103
+ tool_outputs: input.toolOutputs,
104
+ });
105
+ }
106
+ return this._getResponse(run.id, run.thread_id);
107
+ }
108
+ async _parseStepsInput(input) {
109
+ const { action: { runId, threadId }, } = input.steps[input.steps.length - 1];
110
+ const run = await this._waitForRun(runId, threadId);
111
+ const toolCalls = run.required_action?.submit_tool_outputs.tool_calls;
112
+ if (!toolCalls) {
113
+ return input;
114
+ }
115
+ const toolOutputs = toolCalls.flatMap((toolCall) => {
116
+ const matchedAction = input.steps.find((step) => step.action.toolCallId === toolCall.id);
117
+ return matchedAction
118
+ ? [
119
+ {
120
+ output: matchedAction.observation,
121
+ tool_call_id: matchedAction.action.toolCallId,
122
+ },
123
+ ]
124
+ : [];
125
+ });
126
+ return { toolOutputs, runId, threadId };
127
+ }
128
+ async _createRun({ instructions, model, tools, metadata, threadId, }) {
129
+ const run = this.client.beta.threads.runs.create(threadId, {
130
+ assistant_id: this.assistantId,
131
+ instructions,
132
+ model,
133
+ tools,
134
+ metadata,
135
+ });
136
+ return run;
137
+ }
138
+ async _createThreadAndRun(input) {
139
+ const params = [
140
+ "instructions",
141
+ "model",
142
+ "tools",
143
+ "run_metadata",
144
+ ]
145
+ .filter((key) => key in input)
146
+ .reduce((obj, key) => {
147
+ const newObj = obj;
148
+ newObj[key] = input[key];
149
+ return newObj;
150
+ }, {});
151
+ const run = this.client.beta.threads.createAndRun({
152
+ ...params,
153
+ thread: input.thread,
154
+ assistant_id: this.assistantId,
155
+ });
156
+ return run;
157
+ }
158
+ async _waitForRun(runId, threadId) {
159
+ let inProgress = true;
160
+ let run = {};
161
+ while (inProgress) {
162
+ run = await this.client.beta.threads.runs.retrieve(threadId, runId);
163
+ inProgress = ["in_progress", "queued"].includes(run.status);
164
+ if (inProgress) {
165
+ await sleep(this.pollIntervalMs);
166
+ }
167
+ }
168
+ return run;
169
+ }
170
+ async _getResponse(runId, threadId) {
171
+ const run = await this._waitForRun(runId, threadId);
172
+ if (run.status === "completed") {
173
+ const messages = await this.client.beta.threads.messages.list(threadId, {
174
+ order: "asc",
175
+ });
176
+ const newMessages = messages.data.filter((msg) => msg.run_id === runId);
177
+ if (!this.asAgent) {
178
+ return newMessages;
179
+ }
180
+ const answer = newMessages.flatMap((msg) => msg.content);
181
+ if (answer.every((item) => item.type === "text")) {
182
+ const answerString = answer
183
+ .map((item) => item.type === "text" && item.text.value)
184
+ .join("\n");
185
+ return {
186
+ returnValues: {
187
+ output: answerString,
188
+ },
189
+ log: "",
190
+ runId,
191
+ threadId,
192
+ };
193
+ }
194
+ }
195
+ else if (run.status === "requires_action") {
196
+ if (!this.asAgent) {
197
+ return run.required_action?.submit_tool_outputs.tool_calls ?? [];
198
+ }
199
+ const actions = [];
200
+ run.required_action?.submit_tool_outputs.tool_calls.forEach((item) => {
201
+ const functionCall = item.function;
202
+ const args = JSON.parse(functionCall.arguments);
203
+ actions.push({
204
+ tool: functionCall.name,
205
+ toolInput: args,
206
+ toolCallId: item.id,
207
+ log: "",
208
+ runId,
209
+ threadId,
210
+ });
211
+ });
212
+ return actions;
213
+ }
214
+ const runInfo = JSON.stringify(run, null, 2);
215
+ throw new Error(`Unexpected run status ${run.status}.\nFull run info:\n\n${runInfo}`);
216
+ }
217
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import type { OpenAI as OpenAIClient } from "openai";
2
+ import type { AgentFinish, AgentAction } from "../../schema/index.js";
3
+ export type OpenAIAssistantFinish = AgentFinish & {
4
+ runId: string;
5
+ threadId: string;
6
+ };
7
+ export type OpenAIAssistantAction = AgentAction & {
8
+ toolCallId: string;
9
+ runId: string;
10
+ threadId: string;
11
+ };
12
+ export type OpenAIToolType = Array<OpenAIClient.Beta.AssistantCreateParams.AssistantToolsCode | OpenAIClient.Beta.AssistantCreateParams.AssistantToolsRetrieval | OpenAIClient.Beta.AssistantCreateParams.AssistantToolsFunction>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlanAndExecuteAgentExecutor = void 0;
3
+ exports.PlanAndExecuteAgentExecutor = exports.isDynamicStructuredTool = void 0;
4
4
  const base_js_1 = require("../../chains/base.cjs");
5
5
  const base_js_2 = require("./base.cjs");
6
6
  const executor_js_1 = require("../../agents/executor.cjs");
@@ -8,6 +8,21 @@ const prompt_js_1 = require("./prompt.cjs");
8
8
  const llm_chain_js_1 = require("../../chains/llm_chain.cjs");
9
9
  const outputParser_js_1 = require("./outputParser.cjs");
10
10
  const index_js_1 = require("../../agents/chat/index.cjs");
11
+ const index_js_2 = require("../../agents/index.cjs");
12
+ /**
13
+ * A utility function to distiguish a dynamicstructuredtool over other tools.
14
+ * @param tool the tool to test
15
+ * @returns bool
16
+ */
17
+ function isDynamicStructuredTool(tool) {
18
+ // We check for the existence of the static lc_name method in the object's constructor
19
+ return (
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ typeof tool.constructor.lc_name === "function" &&
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ tool.constructor.lc_name() === "DynamicStructuredTool");
24
+ }
25
+ exports.isDynamicStructuredTool = isDynamicStructuredTool;
11
26
  /**
12
27
  * Class representing a plan-and-execute agent executor. This agent
13
28
  * decides on the full sequence of actions upfront, then executes them all
@@ -86,7 +101,18 @@ class PlanAndExecuteAgentExecutor extends base_js_1.BaseChain {
86
101
  * @returns A new ChainStepExecutor instance.
87
102
  */
88
103
  static getDefaultStepExecutor({ llm, tools, humanMessageTemplate = prompt_js_1.DEFAULT_STEP_EXECUTOR_HUMAN_CHAT_MESSAGE_TEMPLATE, }) {
89
- const agent = index_js_1.ChatAgent.fromLLMAndTools(llm, tools, {
104
+ let agent;
105
+ if (isDynamicStructuredTool(tools[0])) {
106
+ agent = index_js_2.StructuredChatAgent.fromLLMAndTools(llm, tools, {
107
+ humanMessageTemplate,
108
+ inputVariables: ["previous_steps", "current_step", "agent_scratchpad"],
109
+ });
110
+ return new base_js_2.ChainStepExecutor(executor_js_1.AgentExecutor.fromAgentAndTools({
111
+ agent,
112
+ tools,
113
+ }));
114
+ }
115
+ agent = index_js_1.ChatAgent.fromLLMAndTools(llm, tools, {
90
116
  humanMessageTemplate,
91
117
  });
92
118
  return new base_js_2.ChainStepExecutor(executor_js_1.AgentExecutor.fromAgentAndTools({
@@ -4,7 +4,14 @@ import { ChainValues } from "../../schema/index.js";
4
4
  import { BaseLanguageModel } from "../../base_language/index.js";
5
5
  import { CallbackManagerForChainRun } from "../../callbacks/manager.js";
6
6
  import { Tool } from "../../tools/base.js";
7
+ import { DynamicStructuredTool } from "../../tools/dynamic.js";
7
8
  import { SerializedLLMChain } from "../../chains/serde.js";
9
+ /**
10
+ * A utility function to distiguish a dynamicstructuredtool over other tools.
11
+ * @param tool the tool to test
12
+ * @returns bool
13
+ */
14
+ export declare function isDynamicStructuredTool(tool: Tool | DynamicStructuredTool): tool is DynamicStructuredTool;
8
15
  /**
9
16
  * Interface for the input to the PlanAndExecuteAgentExecutor class. It
10
17
  * extends ChainInputs and includes additional properties for the planner,
@@ -42,7 +49,7 @@ export declare class PlanAndExecuteAgentExecutor extends BaseChain {
42
49
  */
43
50
  static getDefaultPlanner({ llm, tools, }: {
44
51
  llm: BaseLanguageModel;
45
- tools: Tool[];
52
+ tools: Tool[] | DynamicStructuredTool[];
46
53
  }): Promise<LLMPlanner>;
47
54
  /**
48
55
  * Static method that returns a default step executor for the agent. It
@@ -55,7 +62,7 @@ export declare class PlanAndExecuteAgentExecutor extends BaseChain {
55
62
  */
56
63
  static getDefaultStepExecutor({ llm, tools, humanMessageTemplate, }: {
57
64
  llm: BaseLanguageModel;
58
- tools: Tool[];
65
+ tools: Tool[] | DynamicStructuredTool[];
59
66
  humanMessageTemplate?: string;
60
67
  }): ChainStepExecutor;
61
68
  /**
@@ -70,7 +77,7 @@ export declare class PlanAndExecuteAgentExecutor extends BaseChain {
70
77
  */
71
78
  static fromLLMAndTools({ llm, tools, humanMessageTemplate, }: {
72
79
  llm: BaseLanguageModel;
73
- tools: Tool[];
80
+ tools: Tool[] | DynamicStructuredTool[];
74
81
  humanMessageTemplate?: string;
75
82
  } & Omit<PlanAndExecuteAgentExecutorInput, "planner" | "stepExecutor">): Promise<PlanAndExecuteAgentExecutor>;
76
83
  /** @ignore */
@@ -5,6 +5,20 @@ import { DEFAULT_STEP_EXECUTOR_HUMAN_CHAT_MESSAGE_TEMPLATE, getPlannerChatPrompt
5
5
  import { LLMChain } from "../../chains/llm_chain.js";
6
6
  import { PlanOutputParser } from "./outputParser.js";
7
7
  import { ChatAgent } from "../../agents/chat/index.js";
8
+ import { StructuredChatAgent } from "../../agents/index.js";
9
+ /**
10
+ * A utility function to distiguish a dynamicstructuredtool over other tools.
11
+ * @param tool the tool to test
12
+ * @returns bool
13
+ */
14
+ export function isDynamicStructuredTool(tool) {
15
+ // We check for the existence of the static lc_name method in the object's constructor
16
+ return (
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ typeof tool.constructor.lc_name === "function" &&
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ tool.constructor.lc_name() === "DynamicStructuredTool");
21
+ }
8
22
  /**
9
23
  * Class representing a plan-and-execute agent executor. This agent
10
24
  * decides on the full sequence of actions upfront, then executes them all
@@ -83,7 +97,18 @@ export class PlanAndExecuteAgentExecutor extends BaseChain {
83
97
  * @returns A new ChainStepExecutor instance.
84
98
  */
85
99
  static getDefaultStepExecutor({ llm, tools, humanMessageTemplate = DEFAULT_STEP_EXECUTOR_HUMAN_CHAT_MESSAGE_TEMPLATE, }) {
86
- const agent = ChatAgent.fromLLMAndTools(llm, tools, {
100
+ let agent;
101
+ if (isDynamicStructuredTool(tools[0])) {
102
+ agent = StructuredChatAgent.fromLLMAndTools(llm, tools, {
103
+ humanMessageTemplate,
104
+ inputVariables: ["previous_steps", "current_step", "agent_scratchpad"],
105
+ });
106
+ return new ChainStepExecutor(AgentExecutor.fromAgentAndTools({
107
+ agent,
108
+ tools,
109
+ }));
110
+ }
111
+ agent = ChatAgent.fromLLMAndTools(llm, tools, {
87
112
  humanMessageTemplate,
88
113
  });
89
114
  return new ChainStepExecutor(AgentExecutor.fromAgentAndTools({
@@ -1,5 +1,6 @@
1
1
  import { ChatPromptTemplate } from "../../prompts/chat.js";
2
2
  import { Tool } from "../../tools/base.js";
3
+ import { DynamicStructuredTool } from "../../tools/dynamic.js";
3
4
  export declare const PLANNER_SYSTEM_PROMPT_MESSAGE_TEMPLATE: string;
4
5
  export declare const DEFAULT_STEP_EXECUTOR_HUMAN_CHAT_MESSAGE_TEMPLATE = "Previous steps: {previous_steps}\n\nCurrent objective: {current_step}\n\n{agent_scratchpad}\n\nYou may extract and combine relevant data from your previous steps when responding to me.";
5
6
  /**
@@ -9,4 +10,4 @@ export declare const DEFAULT_STEP_EXECUTOR_HUMAN_CHAT_MESSAGE_TEMPLATE = "Previo
9
10
  * @param tools the tools available to the `planner`
10
11
  * @returns
11
12
  */
12
- export declare const getPlannerChatPrompt: (tools: Tool[]) => Promise<ChatPromptTemplate<import("../../schema/index.js").InputValues<string>, any>>;
13
+ export declare const getPlannerChatPrompt: (tools: Tool[] | DynamicStructuredTool[]) => Promise<ChatPromptTemplate<import("../../schema/index.js").InputValues<string>, any>>;
@@ -24,12 +24,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  return result;
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.chat_models__cloudflare_workersai = exports.chat_models__anthropic = exports.chat_models__openai = exports.chat_models__base = exports.document_transformers__openai_functions = exports.document_loaders__web__sort_xyz_blockchain = exports.document_loaders__web__serpapi = exports.document_loaders__web__searchapi = exports.document_loaders__base = exports.document = exports.memory = exports.text_splitter = exports.vectorstores__xata = exports.vectorstores__vectara = exports.vectorstores__prisma = exports.vectorstores__memory = exports.vectorstores__base = exports.prompts = exports.llms__fake = exports.llms__yandex = exports.llms__fireworks = exports.llms__ollama = exports.llms__cloudflare_workersai = exports.llms__aleph_alpha = exports.llms__ai21 = exports.llms__openai = exports.llms__base = exports.embeddings__voyage = exports.embeddings__minimax = exports.embeddings__openai = exports.embeddings__ollama = exports.embeddings__fake = exports.embeddings__cache_backed = exports.embeddings__base = exports.chains__openai_functions = exports.chains__combine_documents__reduce = exports.chains = exports.tools__render = exports.tools = exports.base_language = exports.agents__openai__output_parser = exports.agents__xml__output_parser = exports.agents__react__output_parser = exports.agents__format_scratchpad__log_to_message = exports.agents__format_scratchpad__xml = exports.agents__format_scratchpad__log = exports.agents__format_scratchpad = exports.agents__toolkits = exports.agents = exports.load__serializable = void 0;
28
- exports.runnables__remote = exports.evaluation = exports.experimental__chains__violation_of_expectations = exports.experimental__chat_models__bittensor = exports.experimental__plan_and_execute = exports.experimental__generative_agents = exports.experimental__babyagi = exports.experimental__autogpt = exports.util__time = exports.util__math = exports.util__document = exports.storage__in_memory = exports.storage__encoder_backed = exports.stores__message__in_memory = exports.stores__file__in_memory = exports.stores__doc__in_memory = exports.cache = exports.retrievers__vespa = exports.retrievers__score_threshold = exports.retrievers__hyde = exports.retrievers__document_compressors__embeddings_filter = exports.retrievers__document_compressors__chain_extract = exports.retrievers__time_weighted = exports.retrievers__tavily_search_api = exports.retrievers__parent_document = exports.retrievers__multi_vector = exports.retrievers__multi_query = exports.retrievers__document_compressors = exports.retrievers__contextual_compression = exports.retrievers__databerry = exports.retrievers__chaindesk = exports.retrievers__remote = exports.output_parsers = exports.callbacks = exports.schema__storage = exports.schema__runnable = exports.schema__retriever = exports.schema__query_constructor = exports.schema__prompt_template = exports.schema__output_parser = exports.schema__document = exports.schema = exports.chat_models__fake = exports.chat_models__yandex = exports.chat_models__minimax = exports.chat_models__ollama = exports.chat_models__baiduwenxin = exports.chat_models__fireworks = void 0;
27
+ exports.chat_models__anthropic = exports.chat_models__openai = exports.chat_models__base = exports.document_transformers__openai_functions = exports.document_loaders__web__sort_xyz_blockchain = exports.document_loaders__web__serpapi = exports.document_loaders__web__searchapi = exports.document_loaders__base = exports.document = exports.memory = exports.text_splitter = exports.vectorstores__xata = exports.vectorstores__vectara = exports.vectorstores__prisma = exports.vectorstores__memory = exports.vectorstores__base = exports.prompts = exports.llms__fake = exports.llms__yandex = exports.llms__fireworks = exports.llms__ollama = exports.llms__cloudflare_workersai = exports.llms__aleph_alpha = exports.llms__ai21 = exports.llms__openai = exports.llms__base = exports.embeddings__voyage = exports.embeddings__minimax = exports.embeddings__openai = exports.embeddings__ollama = exports.embeddings__fake = exports.embeddings__cache_backed = exports.embeddings__base = exports.chains__openai_functions = exports.chains__combine_documents__reduce = exports.chains = exports.tools__render = exports.tools = exports.base_language = exports.agents__openai__output_parser = exports.agents__xml__output_parser = exports.agents__react__output_parser = exports.agents__format_scratchpad__log_to_message = exports.agents__format_scratchpad__xml = exports.agents__format_scratchpad__log = exports.agents__format_scratchpad__openai_tools = exports.agents__format_scratchpad = exports.agents__toolkits = exports.agents = exports.load__serializable = void 0;
28
+ exports.runnables__remote = exports.evaluation = exports.experimental__chains__violation_of_expectations = exports.experimental__chat_models__bittensor = exports.experimental__plan_and_execute = exports.experimental__generative_agents = exports.experimental__babyagi = exports.experimental__openai_assistant = exports.experimental__autogpt = exports.util__time = exports.util__math = exports.util__document = exports.storage__in_memory = exports.storage__encoder_backed = exports.stores__message__in_memory = exports.stores__file__in_memory = exports.stores__doc__in_memory = exports.cache = exports.retrievers__vespa = exports.retrievers__score_threshold = exports.retrievers__hyde = exports.retrievers__document_compressors__embeddings_filter = exports.retrievers__document_compressors__chain_extract = exports.retrievers__time_weighted = exports.retrievers__tavily_search_api = exports.retrievers__parent_document = exports.retrievers__multi_vector = exports.retrievers__multi_query = exports.retrievers__document_compressors = exports.retrievers__contextual_compression = exports.retrievers__databerry = exports.retrievers__chaindesk = exports.retrievers__remote = exports.output_parsers = exports.callbacks = exports.schema__storage = exports.schema__runnable = exports.schema__retriever = exports.schema__query_constructor = exports.schema__prompt_template = exports.schema__output_parser = exports.schema__document = exports.schema = exports.chat_models__fake = exports.chat_models__yandex = exports.chat_models__minimax = exports.chat_models__ollama = exports.chat_models__baiduwenxin = exports.chat_models__fireworks = exports.chat_models__cloudflare_workersai = void 0;
29
29
  exports.load__serializable = __importStar(require("../load/serializable.cjs"));
30
30
  exports.agents = __importStar(require("../agents/index.cjs"));
31
31
  exports.agents__toolkits = __importStar(require("../agents/toolkits/index.cjs"));
32
32
  exports.agents__format_scratchpad = __importStar(require("../agents/format_scratchpad/openai_functions.cjs"));
33
+ exports.agents__format_scratchpad__openai_tools = __importStar(require("../agents/format_scratchpad/openai_tools.cjs"));
33
34
  exports.agents__format_scratchpad__log = __importStar(require("../agents/format_scratchpad/log.cjs"));
34
35
  exports.agents__format_scratchpad__xml = __importStar(require("../agents/format_scratchpad/xml.cjs"));
35
36
  exports.agents__format_scratchpad__log_to_message = __importStar(require("../agents/format_scratchpad/log_to_message.cjs"));
@@ -117,6 +118,7 @@ exports.util__document = __importStar(require("../util/document.cjs"));
117
118
  exports.util__math = __importStar(require("../util/math.cjs"));
118
119
  exports.util__time = __importStar(require("../util/time.cjs"));
119
120
  exports.experimental__autogpt = __importStar(require("../experimental/autogpt/index.cjs"));
121
+ exports.experimental__openai_assistant = __importStar(require("../experimental/openai_assistant/index.cjs"));
120
122
  exports.experimental__babyagi = __importStar(require("../experimental/babyagi/index.cjs"));
121
123
  exports.experimental__generative_agents = __importStar(require("../experimental/generative_agents/index.cjs"));
122
124
  exports.experimental__plan_and_execute = __importStar(require("../experimental/plan_and_execute/index.cjs"));
@@ -2,6 +2,7 @@ export * as load__serializable from "../load/serializable.js";
2
2
  export * as agents from "../agents/index.js";
3
3
  export * as agents__toolkits from "../agents/toolkits/index.js";
4
4
  export * as agents__format_scratchpad from "../agents/format_scratchpad/openai_functions.js";
5
+ export * as agents__format_scratchpad__openai_tools from "../agents/format_scratchpad/openai_tools.js";
5
6
  export * as agents__format_scratchpad__log from "../agents/format_scratchpad/log.js";
6
7
  export * as agents__format_scratchpad__xml from "../agents/format_scratchpad/xml.js";
7
8
  export * as agents__format_scratchpad__log_to_message from "../agents/format_scratchpad/log_to_message.js";
@@ -89,6 +90,7 @@ export * as util__document from "../util/document.js";
89
90
  export * as util__math from "../util/math.js";
90
91
  export * as util__time from "../util/time.js";
91
92
  export * as experimental__autogpt from "../experimental/autogpt/index.js";
93
+ export * as experimental__openai_assistant from "../experimental/openai_assistant/index.js";
92
94
  export * as experimental__babyagi from "../experimental/babyagi/index.js";
93
95
  export * as experimental__generative_agents from "../experimental/generative_agents/index.js";
94
96
  export * as experimental__plan_and_execute from "../experimental/plan_and_execute/index.js";
@@ -3,6 +3,7 @@ export * as load__serializable from "../load/serializable.js";
3
3
  export * as agents from "../agents/index.js";
4
4
  export * as agents__toolkits from "../agents/toolkits/index.js";
5
5
  export * as agents__format_scratchpad from "../agents/format_scratchpad/openai_functions.js";
6
+ export * as agents__format_scratchpad__openai_tools from "../agents/format_scratchpad/openai_tools.js";
6
7
  export * as agents__format_scratchpad__log from "../agents/format_scratchpad/log.js";
7
8
  export * as agents__format_scratchpad__xml from "../agents/format_scratchpad/xml.js";
8
9
  export * as agents__format_scratchpad__log_to_message from "../agents/format_scratchpad/log_to_message.js";
@@ -90,6 +91,7 @@ export * as util__document from "../util/document.js";
90
91
  export * as util__math from "../util/math.js";
91
92
  export * as util__time from "../util/time.js";
92
93
  export * as experimental__autogpt from "../experimental/autogpt/index.js";
94
+ export * as experimental__openai_assistant from "../experimental/openai_assistant/index.js";
93
95
  export * as experimental__babyagi from "../experimental/babyagi/index.js";
94
96
  export * as experimental__generative_agents from "../experimental/generative_agents/index.js";
95
97
  export * as experimental__plan_and_execute from "../experimental/plan_and_execute/index.js";
@@ -337,13 +337,34 @@ class ChatPromptTemplate extends BaseChatPromptTemplate {
337
337
  _getPromptType() {
338
338
  return "chat";
339
339
  }
340
+ async _parseImagePrompts(message, inputValues) {
341
+ if (typeof message.content === "string") {
342
+ return message;
343
+ }
344
+ const formattedMessageContent = await Promise.all(message.content.map(async (item) => {
345
+ if (item.type !== "image_url" ||
346
+ typeof item.image_url === "string" ||
347
+ !item.image_url?.url) {
348
+ return item;
349
+ }
350
+ const imageUrl = item.image_url.url;
351
+ const promptTemplatePlaceholder = prompt_js_1.PromptTemplate.fromTemplate(imageUrl);
352
+ const formattedUrl = await promptTemplatePlaceholder.format(inputValues);
353
+ // eslint-disable-next-line no-param-reassign
354
+ item.image_url.url = formattedUrl;
355
+ return item;
356
+ }));
357
+ // eslint-disable-next-line no-param-reassign
358
+ message.content = formattedMessageContent;
359
+ return message;
360
+ }
340
361
  async formatMessages(values) {
341
362
  const allValues = await this.mergePartialAndUserVariables(values);
342
363
  let resultMessages = [];
343
364
  for (const promptMessage of this.promptMessages) {
344
365
  // eslint-disable-next-line no-instanceof/no-instanceof
345
366
  if (promptMessage instanceof index_js_1.BaseMessage) {
346
- resultMessages.push(promptMessage);
367
+ resultMessages.push(await this._parseImagePrompts(promptMessage, allValues));
347
368
  }
348
369
  else {
349
370
  const inputValues = promptMessage.inputVariables.reduce((acc, inputVariable) => {
@@ -169,6 +169,7 @@ export declare class ChatPromptTemplate<RunInput extends InputValues = any, Part
169
169
  validateTemplate: boolean;
170
170
  constructor(input: ChatPromptTemplateInput<RunInput, PartialVariableName>);
171
171
  _getPromptType(): "chat";
172
+ private _parseImagePrompts;
172
173
  formatMessages(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage[]>;
173
174
  partial<NewPartialVariableName extends string>(values: PartialValues<NewPartialVariableName>): Promise<ChatPromptTemplate<InputValues<Exclude<Extract<keyof RunInput, string>, NewPartialVariableName>>, any>>;
174
175
  /**
@@ -325,13 +325,34 @@ export class ChatPromptTemplate extends BaseChatPromptTemplate {
325
325
  _getPromptType() {
326
326
  return "chat";
327
327
  }
328
+ async _parseImagePrompts(message, inputValues) {
329
+ if (typeof message.content === "string") {
330
+ return message;
331
+ }
332
+ const formattedMessageContent = await Promise.all(message.content.map(async (item) => {
333
+ if (item.type !== "image_url" ||
334
+ typeof item.image_url === "string" ||
335
+ !item.image_url?.url) {
336
+ return item;
337
+ }
338
+ const imageUrl = item.image_url.url;
339
+ const promptTemplatePlaceholder = PromptTemplate.fromTemplate(imageUrl);
340
+ const formattedUrl = await promptTemplatePlaceholder.format(inputValues);
341
+ // eslint-disable-next-line no-param-reassign
342
+ item.image_url.url = formattedUrl;
343
+ return item;
344
+ }));
345
+ // eslint-disable-next-line no-param-reassign
346
+ message.content = formattedMessageContent;
347
+ return message;
348
+ }
328
349
  async formatMessages(values) {
329
350
  const allValues = await this.mergePartialAndUserVariables(values);
330
351
  let resultMessages = [];
331
352
  for (const promptMessage of this.promptMessages) {
332
353
  // eslint-disable-next-line no-instanceof/no-instanceof
333
354
  if (promptMessage instanceof BaseMessage) {
334
- resultMessages.push(promptMessage);
355
+ resultMessages.push(await this._parseImagePrompts(promptMessage, allValues));
335
356
  }
336
357
  else {
337
358
  const inputValues = promptMessage.inputVariables.reduce((acc, inputVariable) => {
@@ -70,6 +70,7 @@ export type MessageContent = string | {
70
70
  text?: string;
71
71
  image_url?: string | {
72
72
  url: string;
73
+ detail?: "low" | "high";
73
74
  };
74
75
  }[];
75
76
  export interface BaseMessageFields {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatToOpenAITool = exports.formatToOpenAIFunction = void 0;
3
+ exports.formatToOpenAIAssistantTool = exports.formatToOpenAITool = exports.formatToOpenAIFunction = void 0;
4
4
  const zod_to_json_schema_1 = require("zod-to-json-schema");
5
5
  /**
6
6
  * Formats a `StructuredTool` instance into a format that is compatible
@@ -17,13 +17,25 @@ function formatToOpenAIFunction(tool) {
17
17
  }
18
18
  exports.formatToOpenAIFunction = formatToOpenAIFunction;
19
19
  function formatToOpenAITool(tool) {
20
+ const schema = (0, zod_to_json_schema_1.zodToJsonSchema)(tool.schema);
20
21
  return {
21
22
  type: "function",
22
23
  function: {
23
24
  name: tool.name,
24
25
  description: tool.description,
25
- parameters: (0, zod_to_json_schema_1.zodToJsonSchema)(tool.schema),
26
+ parameters: schema,
26
27
  },
27
28
  };
28
29
  }
29
30
  exports.formatToOpenAITool = formatToOpenAITool;
31
+ function formatToOpenAIAssistantTool(tool) {
32
+ return {
33
+ type: "function",
34
+ function: {
35
+ name: tool.name,
36
+ description: tool.description,
37
+ parameters: (0, zod_to_json_schema_1.zodToJsonSchema)(tool.schema),
38
+ },
39
+ };
40
+ }
41
+ exports.formatToOpenAIAssistantTool = formatToOpenAIAssistantTool;
@@ -8,3 +8,4 @@ import { StructuredTool } from "./base.js";
8
8
  */
9
9
  export declare function formatToOpenAIFunction(tool: StructuredTool): OpenAIClient.Chat.ChatCompletionCreateParams.Function;
10
10
  export declare function formatToOpenAITool(tool: StructuredTool): OpenAIClient.Chat.ChatCompletionTool;
11
+ export declare function formatToOpenAIAssistantTool(tool: StructuredTool): OpenAIClient.Beta.AssistantCreateParams.AssistantToolsFunction;
@@ -13,6 +13,17 @@ export function formatToOpenAIFunction(tool) {
13
13
  };
14
14
  }
15
15
  export function formatToOpenAITool(tool) {
16
+ const schema = zodToJsonSchema(tool.schema);
17
+ return {
18
+ type: "function",
19
+ function: {
20
+ name: tool.name,
21
+ description: tool.description,
22
+ parameters: schema,
23
+ },
24
+ };
25
+ }
26
+ export function formatToOpenAIAssistantTool(tool) {
16
27
  return {
17
28
  type: "function",
18
29
  function: {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatToOpenAIFunction = exports.SearchApi = exports.SearxngSearch = exports.DataForSeoAPISearch = exports.WolframAlphaTool = exports.WikipediaQueryRun = exports.BraveSearch = exports.WriteFileTool = exports.ReadFileTool = exports.AIPluginTool = exports.GoogleCustomSearch = exports.Serper = exports.ZapierNLAWrapper = exports.ZapierNLARunAction = exports.VectorStoreQATool = exports.RequestsPostTool = exports.RequestsGetTool = exports.JsonGetValueTool = exports.JsonListKeysTool = exports.JsonSpec = exports.ChainTool = exports.IFTTTWebhook = exports.DynamicStructuredTool = exports.DynamicTool = exports.StructuredTool = exports.Tool = exports.BingSerpAPI = exports.DadJokeAPI = exports.SerpAPI = void 0;
3
+ exports.formatToOpenAITool = exports.formatToOpenAIFunction = exports.SearchApi = exports.SearxngSearch = exports.DataForSeoAPISearch = exports.WolframAlphaTool = exports.WikipediaQueryRun = exports.BraveSearch = exports.WriteFileTool = exports.ReadFileTool = exports.AIPluginTool = exports.GoogleCustomSearch = exports.Serper = exports.ZapierNLAWrapper = exports.ZapierNLARunAction = exports.VectorStoreQATool = exports.RequestsPostTool = exports.RequestsGetTool = exports.JsonGetValueTool = exports.JsonListKeysTool = exports.JsonSpec = exports.ChainTool = exports.IFTTTWebhook = exports.DynamicStructuredTool = exports.DynamicTool = exports.StructuredTool = exports.Tool = exports.BingSerpAPI = exports.DadJokeAPI = exports.SerpAPI = void 0;
4
4
  var serpapi_js_1 = require("./serpapi.cjs");
5
5
  Object.defineProperty(exports, "SerpAPI", { enumerable: true, get: function () { return serpapi_js_1.SerpAPI; } });
6
6
  var dadjokeapi_js_1 = require("./dadjokeapi.cjs");
@@ -52,3 +52,4 @@ var searchapi_js_1 = require("./searchapi.cjs");
52
52
  Object.defineProperty(exports, "SearchApi", { enumerable: true, get: function () { return searchapi_js_1.SearchApi; } });
53
53
  var convert_to_openai_js_1 = require("./convert_to_openai.cjs");
54
54
  Object.defineProperty(exports, "formatToOpenAIFunction", { enumerable: true, get: function () { return convert_to_openai_js_1.formatToOpenAIFunction; } });
55
+ Object.defineProperty(exports, "formatToOpenAITool", { enumerable: true, get: function () { return convert_to_openai_js_1.formatToOpenAITool; } });
@@ -19,4 +19,4 @@ export { WolframAlphaTool } from "./wolframalpha.js";
19
19
  export { DataForSeoAPISearch, type DataForSeoApiConfig, } from "./dataforseo_api_search.js";
20
20
  export { SearxngSearch } from "./searxng_search.js";
21
21
  export { SearchApi, type SearchApiParameters } from "./searchapi.js";
22
- export { formatToOpenAIFunction } from "./convert_to_openai.js";
22
+ export { formatToOpenAIFunction, formatToOpenAITool, } from "./convert_to_openai.js";
@@ -19,4 +19,4 @@ export { WolframAlphaTool } from "./wolframalpha.js";
19
19
  export { DataForSeoAPISearch, } from "./dataforseo_api_search.js";
20
20
  export { SearxngSearch } from "./searxng_search.js";
21
21
  export { SearchApi } from "./searchapi.js";
22
- export { formatToOpenAIFunction } from "./convert_to_openai.js";
22
+ export { formatToOpenAIFunction, formatToOpenAITool, } from "./convert_to_openai.js";
@@ -224,7 +224,7 @@ class MomentoVectorIndex extends base_js_1.VectorStore {
224
224
  pageContent: hit.metadata[this.textField]?.toString() ?? "",
225
225
  metadata: Object.fromEntries(Object.entries(hit.metadata).filter(([key]) => key !== this.textField)),
226
226
  }),
227
- hit.distance,
227
+ hit.score,
228
228
  ]);
229
229
  }
230
230
  else if (response instanceof sdk_core_1.VectorSearch.Error) {