beeai-framework 0.1.9 → 0.1.11
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.
- package/README.md +18 -6
- package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +7 -6
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +7 -6
- package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +15 -4
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +15 -4
- package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
- package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/chat.d.cts +9 -8
- package/dist/adapters/anthropic/backend/chat.d.ts +9 -8
- package/dist/adapters/anthropic/backend/chat.js.map +1 -1
- package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/client.d.cts +1 -1
- package/dist/adapters/anthropic/backend/client.d.ts +1 -1
- package/dist/adapters/anthropic/backend/client.js.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.d.cts +15 -4
- package/dist/adapters/anthropic/backend/embedding.d.ts +15 -4
- package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.cts +9 -8
- package/dist/adapters/azure-openai/backend/chat.d.ts +9 -8
- package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
- package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/client.d.cts +1 -1
- package/dist/adapters/azure-openai/backend/client.d.ts +1 -1
- package/dist/adapters/azure-openai/backend/client.js.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.cts +15 -4
- package/dist/adapters/azure-openai/backend/embedding.d.ts +15 -4
- package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
- package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
- package/dist/adapters/dummy/backend/chat.d.cts +12 -7
- package/dist/adapters/dummy/backend/chat.d.ts +12 -7
- package/dist/adapters/dummy/backend/chat.js.map +1 -1
- package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
- package/dist/adapters/dummy/backend/embedding.d.cts +15 -3
- package/dist/adapters/dummy/backend/embedding.d.ts +15 -3
- package/dist/adapters/dummy/backend/embedding.js.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.cts +9 -8
- package/dist/adapters/google-vertex/backend/chat.d.ts +9 -8
- package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
- package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/client.d.cts +1 -1
- package/dist/adapters/google-vertex/backend/client.d.ts +1 -1
- package/dist/adapters/google-vertex/backend/client.js.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.d.cts +15 -4
- package/dist/adapters/google-vertex/backend/embedding.d.ts +15 -4
- package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
- package/dist/adapters/groq/backend/chat.cjs.map +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +9 -8
- package/dist/adapters/groq/backend/chat.d.ts +9 -8
- package/dist/adapters/groq/backend/chat.js.map +1 -1
- package/dist/adapters/groq/backend/client.cjs.map +1 -1
- package/dist/adapters/groq/backend/client.d.cts +1 -1
- package/dist/adapters/groq/backend/client.d.ts +1 -1
- package/dist/adapters/groq/backend/client.js.map +1 -1
- package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
- package/dist/adapters/groq/backend/embedding.d.cts +15 -4
- package/dist/adapters/groq/backend/embedding.d.ts +15 -4
- package/dist/adapters/groq/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/backend/chat.cjs +5 -3
- package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
- package/dist/adapters/langchain/backend/chat.d.cts +12 -7
- package/dist/adapters/langchain/backend/chat.d.ts +12 -7
- package/dist/adapters/langchain/backend/chat.js +5 -3
- package/dist/adapters/langchain/backend/chat.js.map +1 -1
- package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
- package/dist/adapters/langchain/backend/embedding.d.cts +15 -3
- package/dist/adapters/langchain/backend/embedding.d.ts +15 -3
- package/dist/adapters/langchain/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/tools.cjs.map +1 -1
- package/dist/adapters/langchain/tools.d.cts +1 -1
- package/dist/adapters/langchain/tools.d.ts +1 -1
- package/dist/adapters/langchain/tools.js.map +1 -1
- package/dist/adapters/ollama/backend/chat.cjs +4 -0
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +10 -8
- package/dist/adapters/ollama/backend/chat.d.ts +10 -8
- package/dist/adapters/ollama/backend/chat.js +4 -0
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- package/dist/adapters/ollama/backend/client.cjs.map +1 -1
- package/dist/adapters/ollama/backend/client.d.cts +1 -1
- package/dist/adapters/ollama/backend/client.d.ts +1 -1
- package/dist/adapters/ollama/backend/client.js.map +1 -1
- package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
- package/dist/adapters/ollama/backend/embedding.d.cts +15 -4
- package/dist/adapters/ollama/backend/embedding.d.ts +15 -4
- package/dist/adapters/ollama/backend/embedding.js.map +1 -1
- package/dist/adapters/openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/openai/backend/chat.d.cts +7 -6
- package/dist/adapters/openai/backend/chat.d.ts +7 -6
- package/dist/adapters/openai/backend/chat.js.map +1 -1
- package/dist/adapters/openai/backend/client.cjs.map +1 -1
- package/dist/adapters/openai/backend/client.d.cts +1 -1
- package/dist/adapters/openai/backend/client.d.ts +1 -1
- package/dist/adapters/openai/backend/client.js.map +1 -1
- package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/openai/backend/embedding.d.cts +15 -4
- package/dist/adapters/openai/backend/embedding.d.ts +15 -4
- package/dist/adapters/openai/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/chat.cjs +51 -7
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +12 -7
- package/dist/adapters/vercel/backend/chat.d.ts +12 -7
- package/dist/adapters/vercel/backend/chat.js +54 -10
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +14 -3
- package/dist/adapters/vercel/backend/embedding.d.ts +14 -3
- package/dist/adapters/vercel/backend/embedding.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs +25 -4
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +13 -7
- package/dist/adapters/watsonx/backend/chat.d.ts +13 -7
- package/dist/adapters/watsonx/backend/chat.js +25 -4
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/client.d.cts +1 -1
- package/dist/adapters/watsonx/backend/client.d.ts +1 -1
- package/dist/adapters/watsonx/backend/client.js.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.cts +15 -3
- package/dist/adapters/watsonx/backend/embedding.d.ts +15 -3
- package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
- package/dist/{agent-Bpt7IFa_.d.cts → agent-Ca5UE2P1.d.cts} +3 -3
- package/dist/{agent-Bf2FaCKy.d.ts → agent-CgsoqVL5.d.ts} +3 -3
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/experimental/remote/agent.cjs.map +1 -1
- package/dist/agents/experimental/remote/agent.d.cts +2 -2
- package/dist/agents/experimental/remote/agent.d.ts +2 -2
- package/dist/agents/experimental/remote/agent.js.map +1 -1
- package/dist/agents/experimental/replan/agent.cjs.map +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +6 -6
- package/dist/agents/experimental/replan/agent.d.ts +6 -6
- package/dist/agents/experimental/replan/agent.js.map +1 -1
- package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/replan/prompts.js.map +1 -1
- package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +6 -6
- package/dist/agents/experimental/streamlit/agent.d.ts +6 -6
- package/dist/agents/experimental/streamlit/agent.js.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.d.cts +1 -1
- package/dist/agents/experimental/streamlit/prompts.d.ts +1 -1
- package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
- package/dist/agents/react/agent.cjs.map +1 -1
- package/dist/agents/react/agent.d.cts +6 -6
- package/dist/agents/react/agent.d.ts +6 -6
- package/dist/agents/react/agent.js.map +1 -1
- package/dist/agents/react/prompts.cjs.map +1 -1
- package/dist/agents/react/prompts.d.cts +2 -2
- package/dist/agents/react/prompts.d.ts +2 -2
- package/dist/agents/react/prompts.js.map +1 -1
- package/dist/agents/react/runners/base.cjs.map +1 -1
- package/dist/agents/react/runners/base.d.cts +6 -6
- package/dist/agents/react/runners/base.d.ts +6 -6
- package/dist/agents/react/runners/base.js.map +1 -1
- package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
- package/dist/agents/react/runners/deep-think/prompts.d.cts +2 -2
- package/dist/agents/react/runners/deep-think/prompts.d.ts +2 -2
- package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
- package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
- package/dist/agents/react/runners/deep-think/runner.d.cts +7 -7
- package/dist/agents/react/runners/deep-think/runner.d.ts +7 -7
- package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
- package/dist/agents/react/runners/default/runner.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.d.cts +9 -9
- package/dist/agents/react/runners/default/runner.d.ts +9 -9
- package/dist/agents/react/runners/default/runner.js.map +1 -1
- package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
- package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
- package/dist/agents/react/runners/granite/prompts.d.cts +2 -2
- package/dist/agents/react/runners/granite/prompts.d.ts +2 -2
- package/dist/agents/react/runners/granite/prompts.js.map +1 -1
- package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
- package/dist/agents/react/runners/granite/runner.d.cts +8 -8
- package/dist/agents/react/runners/granite/runner.d.ts +8 -8
- package/dist/agents/react/runners/granite/runner.js.map +1 -1
- package/dist/agents/react/types.d.cts +5 -5
- package/dist/agents/react/types.d.ts +5 -5
- package/dist/agents/toolCalling/agent.cjs +33 -12
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +7 -6
- package/dist/agents/toolCalling/agent.d.ts +7 -6
- package/dist/agents/toolCalling/agent.js +35 -14
- package/dist/agents/toolCalling/agent.js.map +1 -1
- package/dist/agents/toolCalling/prompts.cjs +3 -2
- package/dist/agents/toolCalling/prompts.cjs.map +1 -1
- package/dist/agents/toolCalling/prompts.d.cts +1 -1
- package/dist/agents/toolCalling/prompts.d.ts +1 -1
- package/dist/agents/toolCalling/prompts.js +3 -2
- package/dist/agents/toolCalling/prompts.js.map +1 -1
- package/dist/agents/toolCalling/types.d.cts +2 -2
- package/dist/agents/toolCalling/types.d.ts +2 -2
- package/dist/agents/types.d.cts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/backend/backend.cjs.map +1 -1
- package/dist/backend/backend.d.cts +6 -5
- package/dist/backend/backend.d.ts +6 -5
- package/dist/backend/backend.js.map +1 -1
- package/dist/backend/chat.cjs +61 -3
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +17 -138
- package/dist/backend/chat.d.ts +17 -138
- package/dist/backend/chat.js +64 -6
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/client.cjs.map +1 -1
- package/dist/backend/client.d.cts +1 -1
- package/dist/backend/client.d.ts +1 -1
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/constants.cjs +5 -0
- package/dist/backend/constants.cjs.map +1 -1
- package/dist/backend/constants.d.cts +6 -1
- package/dist/backend/constants.d.ts +6 -1
- package/dist/backend/constants.js +5 -0
- package/dist/backend/constants.js.map +1 -1
- package/dist/backend/core.d.cts +5 -4
- package/dist/backend/core.d.ts +5 -4
- package/dist/backend/embedding.cjs.map +1 -1
- package/dist/backend/embedding.d.cts +14 -2
- package/dist/backend/embedding.d.ts +14 -2
- package/dist/backend/embedding.js.map +1 -1
- package/dist/backend/errors.cjs.map +1 -1
- package/dist/backend/errors.d.cts +1 -1
- package/dist/backend/errors.d.ts +1 -1
- package/dist/backend/errors.js.map +1 -1
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.d.cts +1 -1
- package/dist/backend/message.d.ts +1 -1
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.cjs +35 -0
- package/dist/backend/utils.cjs.map +1 -1
- package/dist/backend/utils.d.cts +20 -28
- package/dist/backend/utils.d.ts +20 -28
- package/dist/backend/utils.js +35 -2
- package/dist/backend/utils.js.map +1 -1
- package/dist/{base-mmG-8Pk9.d.ts → base-BOCDDBvG.d.ts} +2 -2
- package/dist/{base-daM6fHUP.d.cts → base-szR2Izbt.d.cts} +2 -2
- package/dist/cache/base.cjs.map +1 -1
- package/dist/cache/base.d.cts +1 -1
- package/dist/cache/base.d.ts +1 -1
- package/dist/cache/base.js.map +1 -1
- package/dist/cache/decoratorCache.cjs.map +1 -1
- package/dist/cache/decoratorCache.d.cts +1 -1
- package/dist/cache/decoratorCache.d.ts +1 -1
- package/dist/cache/decoratorCache.js.map +1 -1
- package/dist/cache/fileCache.cjs.map +1 -1
- package/dist/cache/fileCache.d.cts +1 -1
- package/dist/cache/fileCache.d.ts +1 -1
- package/dist/cache/fileCache.js.map +1 -1
- package/dist/cache/nullCache.cjs.map +1 -1
- package/dist/cache/nullCache.d.cts +1 -1
- package/dist/cache/nullCache.d.ts +1 -1
- package/dist/cache/nullCache.js.map +1 -1
- package/dist/cache/slidingCache.cjs.map +1 -1
- package/dist/cache/slidingCache.d.cts +1 -1
- package/dist/cache/slidingCache.d.ts +1 -1
- package/dist/cache/slidingCache.js.map +1 -1
- package/dist/cache/unconstrainedCache.cjs.map +1 -1
- package/dist/cache/unconstrainedCache.d.cts +1 -1
- package/dist/cache/unconstrainedCache.d.ts +1 -1
- package/dist/cache/unconstrainedCache.js.map +1 -1
- package/dist/chat-BdN8hGWn.d.ts +174 -0
- package/dist/chat-DvMzAHj6.d.cts +174 -0
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +2 -2
- package/dist/context.d.ts +2 -2
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/errors.cjs.map +1 -1
- package/dist/emitter/errors.d.cts +1 -1
- package/dist/emitter/errors.d.ts +1 -1
- package/dist/emitter/errors.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/emitter/utils.cjs.map +1 -1
- package/dist/emitter/utils.d.cts +1 -1
- package/dist/emitter/utils.d.ts +1 -1
- package/dist/emitter/utils.js.map +1 -1
- package/dist/{emitter-BxVxGBbJ.d.ts → emitter-C3dO-s2P.d.ts} +2 -2
- package/dist/{emitter-C9EN5B0j.d.cts → emitter-D5Mu0EEH.d.cts} +2 -2
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.cts +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.cts +4 -6
- package/dist/index.d.ts +4 -6
- package/dist/internals/env.cjs.map +1 -1
- package/dist/internals/env.d.cts +1 -1
- package/dist/internals/env.d.ts +1 -1
- package/dist/internals/env.js.map +1 -1
- package/dist/internals/fetcher.cjs.map +1 -1
- package/dist/internals/fetcher.d.cts +2 -2
- package/dist/internals/fetcher.d.ts +2 -2
- package/dist/internals/fetcher.js.map +1 -1
- package/dist/internals/helpers/array.cjs.map +1 -1
- package/dist/internals/helpers/array.d.cts +1 -1
- package/dist/internals/helpers/array.d.ts +1 -1
- package/dist/internals/helpers/array.js.map +1 -1
- package/dist/internals/helpers/cancellation.cjs.map +1 -1
- package/dist/internals/helpers/cancellation.d.cts +1 -1
- package/dist/internals/helpers/cancellation.d.ts +1 -1
- package/dist/internals/helpers/cancellation.js.map +1 -1
- package/dist/internals/helpers/counter.cjs.map +1 -1
- package/dist/internals/helpers/counter.d.cts +1 -1
- package/dist/internals/helpers/counter.d.ts +1 -1
- package/dist/internals/helpers/counter.js.map +1 -1
- package/dist/internals/helpers/general.cjs.map +1 -1
- package/dist/internals/helpers/general.d.cts +1 -1
- package/dist/internals/helpers/general.d.ts +1 -1
- package/dist/internals/helpers/general.js.map +1 -1
- package/dist/internals/helpers/guards.cjs.map +1 -1
- package/dist/internals/helpers/guards.d.cts +1 -1
- package/dist/internals/helpers/guards.d.ts +1 -1
- package/dist/internals/helpers/guards.js.map +1 -1
- package/dist/internals/helpers/hash.cjs.map +1 -1
- package/dist/internals/helpers/hash.d.cts +1 -1
- package/dist/internals/helpers/hash.d.ts +1 -1
- package/dist/internals/helpers/hash.js.map +1 -1
- package/dist/internals/helpers/map.cjs.map +1 -1
- package/dist/internals/helpers/map.d.cts +1 -1
- package/dist/internals/helpers/map.d.ts +1 -1
- package/dist/internals/helpers/map.js.map +1 -1
- package/dist/internals/helpers/math.cjs.map +1 -1
- package/dist/internals/helpers/math.d.cts +1 -1
- package/dist/internals/helpers/math.d.ts +1 -1
- package/dist/internals/helpers/math.js.map +1 -1
- package/dist/internals/helpers/number.cjs.map +1 -1
- package/dist/internals/helpers/number.d.cts +1 -1
- package/dist/internals/helpers/number.d.ts +1 -1
- package/dist/internals/helpers/number.js.map +1 -1
- package/dist/internals/helpers/object.cjs.map +1 -1
- package/dist/internals/helpers/object.d.cts +1 -1
- package/dist/internals/helpers/object.d.ts +1 -1
- package/dist/internals/helpers/object.js.map +1 -1
- package/dist/internals/helpers/paginate.cjs.map +1 -1
- package/dist/internals/helpers/paginate.d.cts +1 -1
- package/dist/internals/helpers/paginate.d.ts +1 -1
- package/dist/internals/helpers/paginate.js.map +1 -1
- package/dist/internals/helpers/promise.cjs.map +1 -1
- package/dist/internals/helpers/promise.d.cts +1 -1
- package/dist/internals/helpers/promise.d.ts +1 -1
- package/dist/internals/helpers/promise.js.map +1 -1
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.d.cts +1 -1
- package/dist/internals/helpers/prototype.d.ts +1 -1
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/helpers/retry.cjs.map +1 -1
- package/dist/internals/helpers/retry.d.cts +1 -1
- package/dist/internals/helpers/retry.d.ts +1 -1
- package/dist/internals/helpers/retry.js.map +1 -1
- package/dist/internals/helpers/retryable.cjs.map +1 -1
- package/dist/internals/helpers/retryable.d.cts +1 -1
- package/dist/internals/helpers/retryable.d.ts +1 -1
- package/dist/internals/helpers/retryable.js.map +1 -1
- package/dist/internals/helpers/schema.cjs.map +1 -1
- package/dist/internals/helpers/schema.d.cts +1 -1
- package/dist/internals/helpers/schema.d.ts +1 -1
- package/dist/internals/helpers/schema.js.map +1 -1
- package/dist/internals/helpers/stream.cjs.map +1 -1
- package/dist/internals/helpers/stream.d.cts +1 -1
- package/dist/internals/helpers/stream.d.ts +1 -1
- package/dist/internals/helpers/stream.js.map +1 -1
- package/dist/internals/helpers/string.cjs.map +1 -1
- package/dist/internals/helpers/string.d.cts +1 -1
- package/dist/internals/helpers/string.d.ts +1 -1
- package/dist/internals/helpers/string.js.map +1 -1
- package/dist/internals/helpers/weakRef.cjs.map +1 -1
- package/dist/internals/helpers/weakRef.d.cts +1 -1
- package/dist/internals/helpers/weakRef.d.ts +1 -1
- package/dist/internals/helpers/weakRef.js.map +1 -1
- package/dist/internals/serializable.cjs.map +1 -1
- package/dist/internals/serializable.d.cts +1 -1
- package/dist/internals/serializable.d.ts +1 -1
- package/dist/internals/serializable.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.d.cts +1 -1
- package/dist/internals/types.d.ts +1 -1
- package/dist/internals/types.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/logger/pretty.cjs.map +1 -1
- package/dist/logger/pretty.js.map +1 -1
- package/dist/memory/base.cjs.map +1 -1
- package/dist/memory/base.js.map +1 -1
- package/dist/memory/slidingMemory.cjs.map +1 -1
- package/dist/memory/slidingMemory.js.map +1 -1
- package/dist/memory/summarizeMemory.cjs.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +4 -4
- package/dist/memory/summarizeMemory.d.ts +4 -4
- package/dist/memory/summarizeMemory.js.map +1 -1
- package/dist/memory/tokenMemory.cjs.map +1 -1
- package/dist/memory/tokenMemory.js.map +1 -1
- package/dist/memory/unconstrainedMemory.cjs.map +1 -1
- package/dist/memory/unconstrainedMemory.js.map +1 -1
- package/dist/parsers/errors.cjs.map +1 -1
- package/dist/parsers/errors.d.cts +1 -1
- package/dist/parsers/errors.d.ts +1 -1
- package/dist/parsers/errors.js.map +1 -1
- package/dist/parsers/field.cjs.map +1 -1
- package/dist/parsers/field.js.map +1 -1
- package/dist/parsers/linePrefix.cjs.map +1 -1
- package/dist/parsers/linePrefix.d.cts +2 -2
- package/dist/parsers/linePrefix.d.ts +2 -2
- package/dist/parsers/linePrefix.js.map +1 -1
- package/dist/serializer/error.cjs.map +1 -1
- package/dist/serializer/error.d.cts +1 -1
- package/dist/serializer/error.d.ts +1 -1
- package/dist/serializer/error.js.map +1 -1
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.d.cts +1 -1
- package/dist/serializer/serializer.d.ts +1 -1
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.d.cts +1 -1
- package/dist/serializer/utils.d.ts +1 -1
- package/dist/serializer/utils.js.map +1 -1
- package/dist/{serializer-VYDhdryk.d.ts → serializer-BswFRdT8.d.ts} +2 -2
- package/dist/{serializer-CJx5ZpUx.d.cts → serializer-Dz4AIM2O.d.cts} +2 -2
- package/dist/template.cjs.map +1 -1
- package/dist/template.d.cts +1 -1
- package/dist/template.d.ts +1 -1
- package/dist/template.js.map +1 -1
- package/dist/tools/arxiv.cjs.map +1 -1
- package/dist/tools/arxiv.d.cts +2 -2
- package/dist/tools/arxiv.d.ts +2 -2
- package/dist/tools/arxiv.js.map +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.d.cts +1 -1
- package/dist/tools/base.d.ts +1 -1
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calculator.cjs.map +1 -1
- package/dist/tools/calculator.d.cts +2 -2
- package/dist/tools/calculator.d.ts +2 -2
- package/dist/tools/calculator.js.map +1 -1
- package/dist/tools/custom.cjs.map +1 -1
- package/dist/tools/custom.d.cts +5 -5
- package/dist/tools/custom.d.ts +5 -5
- package/dist/tools/custom.js.map +1 -1
- package/dist/tools/database/elasticsearch.cjs.map +1 -1
- package/dist/tools/database/elasticsearch.d.cts +2 -2
- package/dist/tools/database/elasticsearch.d.ts +2 -2
- package/dist/tools/database/elasticsearch.js.map +1 -1
- package/dist/tools/database/metadata.cjs.map +1 -1
- package/dist/tools/database/metadata.d.cts +1 -1
- package/dist/tools/database/metadata.d.ts +1 -1
- package/dist/tools/database/metadata.js.map +1 -1
- package/dist/tools/database/milvus.cjs.map +1 -1
- package/dist/tools/database/milvus.d.cts +4 -4
- package/dist/tools/database/milvus.d.ts +4 -4
- package/dist/tools/database/milvus.js.map +1 -1
- package/dist/tools/database/sql.cjs.map +1 -1
- package/dist/tools/database/sql.d.cts +2 -2
- package/dist/tools/database/sql.d.ts +2 -2
- package/dist/tools/database/sql.js.map +1 -1
- package/dist/tools/llm.cjs.map +1 -1
- package/dist/tools/llm.d.cts +5 -5
- package/dist/tools/llm.d.ts +5 -5
- package/dist/tools/llm.js.map +1 -1
- package/dist/tools/mcp.cjs.map +1 -1
- package/dist/tools/mcp.d.cts +2 -2
- package/dist/tools/mcp.d.ts +2 -2
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/openapi.cjs.map +1 -1
- package/dist/tools/openapi.d.cts +1 -1
- package/dist/tools/openapi.d.ts +1 -1
- package/dist/tools/openapi.js.map +1 -1
- package/dist/tools/python/output.cjs.map +1 -1
- package/dist/tools/python/output.d.cts +2 -2
- package/dist/tools/python/output.d.ts +2 -2
- package/dist/tools/python/output.js.map +1 -1
- package/dist/tools/python/python.cjs +3 -3
- package/dist/tools/python/python.cjs.map +1 -1
- package/dist/tools/python/python.d.cts +4 -4
- package/dist/tools/python/python.d.ts +4 -4
- package/dist/tools/python/python.js +3 -3
- package/dist/tools/python/python.js.map +1 -1
- package/dist/tools/python/storage.cjs.map +1 -1
- package/dist/tools/python/storage.d.cts +1 -1
- package/dist/tools/python/storage.d.ts +1 -1
- package/dist/tools/python/storage.js.map +1 -1
- package/dist/tools/search/base.cjs.map +1 -1
- package/dist/tools/search/base.d.cts +2 -2
- package/dist/tools/search/base.d.ts +2 -2
- package/dist/tools/search/base.js.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
- package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
- package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
- package/dist/tools/search/googleSearch.cjs.map +1 -1
- package/dist/tools/search/googleSearch.d.cts +1 -1
- package/dist/tools/search/googleSearch.d.ts +1 -1
- package/dist/tools/search/googleSearch.js.map +1 -1
- package/dist/tools/search/searXNGSearch.cjs.map +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +2 -2
- package/dist/tools/search/searXNGSearch.d.ts +2 -2
- package/dist/tools/search/searXNGSearch.js.map +1 -1
- package/dist/tools/search/wikipedia.cjs.map +1 -1
- package/dist/tools/search/wikipedia.d.cts +1 -1
- package/dist/tools/search/wikipedia.d.ts +1 -1
- package/dist/tools/search/wikipedia.js.map +1 -1
- package/dist/tools/similarity.cjs.map +1 -1
- package/dist/tools/similarity.d.cts +2 -2
- package/dist/tools/similarity.d.ts +2 -2
- package/dist/tools/similarity.js.map +1 -1
- package/dist/tools/weather/openMeteo.cjs.map +1 -1
- package/dist/tools/weather/openMeteo.d.cts +2 -2
- package/dist/tools/weather/openMeteo.d.ts +2 -2
- package/dist/tools/weather/openMeteo.js.map +1 -1
- package/dist/tools/web/webCrawler.cjs.map +1 -1
- package/dist/tools/web/webCrawler.d.cts +1 -1
- package/dist/tools/web/webCrawler.d.ts +1 -1
- package/dist/tools/web/webCrawler.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.cts +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/workflows/agent.cjs.map +1 -1
- package/dist/workflows/agent.d.cts +43 -43
- package/dist/workflows/agent.d.ts +43 -43
- package/dist/workflows/agent.js.map +1 -1
- package/dist/workflows/workflow.cjs.map +1 -1
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/dist/workflows/workflow.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","_run","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","_createStructure","schema","run","inputSchema","_input","generateObject","temperature","abortSignal","signal","output","ZodArray","ZodEnum","object","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","AssistantMessage","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","name","description","parameters","jsonSchema","getInputJsonSchema","msg","role","content","text","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AssistantMessage, Message, ToolMessage } from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { ZodArray, ZodEnum } from \"zod\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, _run: GetRunContext<this>) {\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const inputSchema = schema._input || schema;\n\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n schema,\n abortSignal: run.signal,\n model: this.model,\n // @ts-expect-error\n output:\n inputSchema instanceof ZodArray\n ? \"array\"\n : inputSchema instanceof ZodEnum\n ? \"enum\"\n : \"object\",\n });\n\n return { object: response.object };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n }\n return { role: msg.role as \"user\" | \"system\", content: msg.text };\n });\n\n return {\n ...this.parameters,\n ...input,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","constructor","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","generateObject","temperature","abortSignal","signal","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","parameters","getInputJsonSchema","msg","role","content","UserMessage","SystemMessage","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject<T>({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n model: this.model,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n response.usage,\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: msg.role, content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"user\", content: msg.content };\n }\n return { role: msg.role, content: msg.content } as CoreMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;AA8BO,MAAMA,6BAEHC,4BAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,mBAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,mBAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,YAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025
|
|
1
|
+
{"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;;;AA8BO,MAAMA,6BAEHC,4BAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,mBAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,mBAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,YAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Model<string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany<string>({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import { EmbeddingModel as EmbeddingModel$1, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.cjs';
|
|
2
2
|
import { EmbeddingModel } from 'ai';
|
|
3
|
-
import { E as Emitter } from '../../../emitter-
|
|
3
|
+
import { E as Emitter } from '../../../emitter-D5Mu0EEH.cjs';
|
|
4
4
|
import { GetRunContext } from '../../../context.cjs';
|
|
5
5
|
import '../../../internals/serializable.cjs';
|
|
6
6
|
import '../../../internals/types.cjs';
|
|
7
7
|
import '../../../internals/helpers/guards.cjs';
|
|
8
8
|
import '../../../errors.cjs';
|
|
9
|
-
import '../../../
|
|
9
|
+
import '../../../chat-DvMzAHj6.cjs';
|
|
10
|
+
import '../../../backend/message.cjs';
|
|
11
|
+
import 'promise-based-task';
|
|
12
|
+
import '../../../cache/base.cjs';
|
|
10
13
|
import '../../../backend/constants.cjs';
|
|
14
|
+
import '../../../tools/base.cjs';
|
|
15
|
+
import 'ajv';
|
|
16
|
+
import '../../../internals/helpers/schema.cjs';
|
|
17
|
+
import 'zod';
|
|
18
|
+
import 'zod-to-json-schema';
|
|
11
19
|
import '../../../internals/helpers/promise.cjs';
|
|
20
|
+
import '../../../template.cjs';
|
|
21
|
+
import '../../../logger/logger.cjs';
|
|
22
|
+
import 'pino';
|
|
12
23
|
|
|
13
24
|
/**
|
|
14
|
-
* Copyright 2025
|
|
25
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
15
26
|
*
|
|
16
27
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17
28
|
* you may not use this file except in compliance with the License.
|
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import { EmbeddingModel as EmbeddingModel$1, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from '../../../backend/embedding.js';
|
|
2
2
|
import { EmbeddingModel } from 'ai';
|
|
3
|
-
import { E as Emitter } from '../../../emitter-
|
|
3
|
+
import { E as Emitter } from '../../../emitter-C3dO-s2P.js';
|
|
4
4
|
import { GetRunContext } from '../../../context.js';
|
|
5
5
|
import '../../../internals/serializable.js';
|
|
6
6
|
import '../../../internals/types.js';
|
|
7
7
|
import '../../../internals/helpers/guards.js';
|
|
8
8
|
import '../../../errors.js';
|
|
9
|
-
import '../../../
|
|
9
|
+
import '../../../chat-BdN8hGWn.js';
|
|
10
|
+
import '../../../backend/message.js';
|
|
11
|
+
import 'promise-based-task';
|
|
12
|
+
import '../../../cache/base.js';
|
|
10
13
|
import '../../../backend/constants.js';
|
|
14
|
+
import '../../../tools/base.js';
|
|
15
|
+
import 'ajv';
|
|
16
|
+
import '../../../internals/helpers/schema.js';
|
|
17
|
+
import 'zod';
|
|
18
|
+
import 'zod-to-json-schema';
|
|
11
19
|
import '../../../internals/helpers/promise.js';
|
|
20
|
+
import '../../../template.js';
|
|
21
|
+
import '../../../logger/logger.js';
|
|
22
|
+
import 'pino';
|
|
12
23
|
|
|
13
24
|
/**
|
|
14
|
-
* Copyright 2025
|
|
25
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
15
26
|
*
|
|
16
27
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17
28
|
* you may not use this file except in compliance with the License.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;AA8BO,MAAMA,6BAEHC,cAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,OAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,YAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,SAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025
|
|
1
|
+
{"version":3,"sources":["embedding.ts"],"names":["VercelEmbeddingModel","EmbeddingModel","emitter","constructor","model","Emitter","root","child","namespace","providerId","creator","modelId","provider","split","toCamelCase","_create","input","run","embedMany","values","abortSignal","signal","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":";;;;;;;AA8BO,MAAMA,6BAEHC,cAAAA,CAAAA;EAhCV;;;;AAiCkBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAA4BC,KAAU,EAAA;AACpC,IAAK,KAAA,EAAA,EAAA,KADqBA,KAAAA,GAAAA,KAAAA;AAE1B,IAAKF,IAAAA,CAAAA,OAAAA,GAAUG,OAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,SAAA;QAAW,IAAKC,CAAAA,UAAAA;AAAY,QAAA;;MACxCC,OAAS,EAAA;KACX,CAAA;AACF;AAEA,EAAA,IAAIC,OAAkB,GAAA;AACpB,IAAA,OAAO,KAAKP,KAAMO,CAAAA,OAAAA;AACpB;AAEA,EAAA,IAAIF,UAAqB,GAAA;AACvB,IAAA,MAAMG,QAAW,GAAA,IAAA,CAAKR,KAAMQ,CAAAA,QAAAA,CAASC,KAAM,CAAA,GAAA,CAAK,CAAA,CAAA,CAAGA,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA;AAC9D,IAAA,OAAOC,YAAYF,QAAAA,CAAAA;AACrB;EAEA,MAAgBG,OAAAA,CACdC,OACAC,GAC+B,EAAA;AAC/B,IAAA,OAAOC,SAAkB,CAAA;AACvBd,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZe,MAAAA,MAAAA,EAAQH,KAAMG,CAAAA,MAAAA;AACdC,MAAAA,WAAAA,EAAaH,GAAII,CAAAA;KACnB,CAAA;AACF;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTb,MAAAA,UAAAA,EAAY,IAAKA,CAAAA,UAAAA;AACjBE,MAAAA,OAAAA,EAAS,IAAKP,CAAAA;AAChB,KAAA;AACF;AAEA,EAAA,MAAMmB,aAAa,EAAEd,UAAAA,EAAYE,OAAS,EAAA,GAAGa,UAAoD,EAAA;AAC/F,IAAMC,MAAAA,QAAAA,GAAW,MAAMzB,oBAAqB0B,CAAAA,QAAAA,CAC1C,GAAGjB,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAS,CAAA,CAAA;AAE5B,IAAI,IAAA,EAAEc,oBAAoBzB,oBAAuB,CAAA,EAAA;AAC/C,MAAM,MAAA,IAAI2B,MAAM,4BAAA,CAAA;AAClB;AACAF,IAAAA,QAAAA,CAASG,OAAO,EAAA;AAChBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;MAClB,GAAGN,QAAAA;AACHpB,MAAAA,KAAAA,EAAOqB,QAASrB,CAAAA;KAClB,CAAA;AACF;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n EmbeddingModel,\n EmbeddingModelInput,\n EmbeddingModelOutput,\n EmbeddingModelEvents,\n} from \"@/backend/embedding.js\";\nimport { embedMany, EmbeddingModel as Model } from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\n\ntype InternalEmbeddingModel = Model<string>;\n\nexport class VercelEmbeddingModel<\n R extends InternalEmbeddingModel = InternalEmbeddingModel,\n> extends EmbeddingModel {\n public readonly emitter: Emitter<EmbeddingModelEvents>;\n\n constructor(public readonly model: R) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"embedding\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(\n input: EmbeddingModelInput,\n run: GetRunContext<this>,\n ): Promise<EmbeddingModelOutput> {\n return embedMany<string>({\n model: this.model,\n values: input.values,\n abortSignal: run.signal,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.model,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await VercelEmbeddingModel.fromName(\n `${providerId}:${modelId}` as FullModelName,\n );\n if (!(instance instanceof VercelEmbeddingModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -10,6 +10,7 @@ var message_cjs = require('../../../backend/message.cjs');
|
|
|
10
10
|
var schema_cjs = require('../../../internals/helpers/schema.cjs');
|
|
11
11
|
var env_cjs = require('../../../internals/env.cjs');
|
|
12
12
|
var errors_cjs = require('../../../errors.cjs');
|
|
13
|
+
var base_cjs = require('../../../tools/base.cjs');
|
|
13
14
|
|
|
14
15
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
16
|
|
|
@@ -25,6 +26,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
25
26
|
modelId;
|
|
26
27
|
client;
|
|
27
28
|
emitter;
|
|
29
|
+
toolChoiceSupport;
|
|
28
30
|
get providerId() {
|
|
29
31
|
return "watsonx";
|
|
30
32
|
}
|
|
@@ -36,7 +38,10 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
36
38
|
"chat"
|
|
37
39
|
],
|
|
38
40
|
creator: this
|
|
39
|
-
})
|
|
41
|
+
}), this.toolChoiceSupport = [
|
|
42
|
+
"none",
|
|
43
|
+
"single"
|
|
44
|
+
];
|
|
40
45
|
this.client = client_cjs.WatsonxClient.ensure(client);
|
|
41
46
|
}
|
|
42
47
|
config(config) {
|
|
@@ -127,6 +132,22 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
127
132
|
parameters: await tool.getInputJsonSchema()
|
|
128
133
|
}
|
|
129
134
|
})));
|
|
135
|
+
const toolConfig = {
|
|
136
|
+
toolChoice: void 0,
|
|
137
|
+
toolChoiceOption: void 0
|
|
138
|
+
};
|
|
139
|
+
if (input.toolChoice) {
|
|
140
|
+
if (input.toolChoice instanceof base_cjs.Tool) {
|
|
141
|
+
toolConfig.toolChoice = {
|
|
142
|
+
type: "function",
|
|
143
|
+
function: {
|
|
144
|
+
name: input.toolChoice.name
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
} else if (this.toolChoiceSupport.includes(input.toolChoice)) {
|
|
148
|
+
toolConfig.toolChoiceOption = input.toolChoice;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
130
151
|
return {
|
|
131
152
|
modelId: this.modelId,
|
|
132
153
|
messages: input.messages.flatMap((message) => {
|
|
@@ -166,7 +187,7 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
166
187
|
projectId: this.client.projectId,
|
|
167
188
|
tools: remeda.isEmpty(tools) ? void 0 : tools,
|
|
168
189
|
responseFormat: void 0,
|
|
169
|
-
...input.responseFormat
|
|
190
|
+
...input.responseFormat && {
|
|
170
191
|
responseFormat: {
|
|
171
192
|
type: Type.JSON_OBJECT
|
|
172
193
|
}
|
|
@@ -177,9 +198,9 @@ class WatsonxChatModel extends chat_cjs.ChatModel {
|
|
|
177
198
|
n: input.n,
|
|
178
199
|
maxTokens: input.maxTokens,
|
|
179
200
|
presencePenalty: input.presencePenalty,
|
|
180
|
-
toolChoice: input.toolChoice,
|
|
181
201
|
stop: input.stopSequences,
|
|
182
|
-
seed: input.seed
|
|
202
|
+
seed: input.seed,
|
|
203
|
+
...toolConfig
|
|
183
204
|
};
|
|
184
205
|
}
|
|
185
206
|
createSnapshot() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["chat.ts"],"names":["Type","WatsonxAiMlVml_v1","WatsonxChatModel","ChatModel","client","emitter","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","id","toolName","function","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","toolChoice","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n args: parseBrokenJson(call.function.arguments),\n }),\n ),\n );\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.args),\n },\n }),\n }));\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat?.type === \"object-json\" && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n toolChoice: input.toolChoice,\n stop: input.stopSequences,\n seed: input.seed,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["chat.ts"],"names":["Type","WatsonxAiMlVml_v1","WatsonxChatModel","ChatModel","client","emitter","toolChoiceSupport","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","id","toolName","function","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n ChatModelToolChoiceSupport,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\nimport { Tool } from \"@/tools/base.js\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\"none\", \"single\"];\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n args: parseBrokenJson(call.function.arguments),\n }),\n ),\n );\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n const toolConfig: Pick<TextChatParams, \"toolChoice\" | \"toolChoiceOption\"> = {\n toolChoice: undefined,\n toolChoiceOption: undefined,\n };\n if (input.toolChoice) {\n if (input.toolChoice instanceof Tool) {\n toolConfig.toolChoice = {\n type: \"function\",\n function: { name: input.toolChoice.name },\n };\n } else if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolConfig.toolChoiceOption = input.toolChoice;\n }\n }\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.args),\n },\n }),\n }));\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n stop: input.stopSequences,\n seed: input.seed,\n ...toolConfig,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Logger } from '../../../logger/logger.cjs';
|
|
2
|
+
import { m as ChatModel, h as ChatModelEmitter, l as ChatModelToolChoiceSupport, k as ChatConfig, d as ChatModelInput, n as ChatModelOutput, C as ChatModelParameters, i as ChatModelCache, g as ChatModelEvents } from '../../../chat-DvMzAHj6.cjs';
|
|
2
3
|
import { Message, MessageContentPart } from '../../../backend/message.cjs';
|
|
3
4
|
import { WatsonxClient, WatsonxClientSettings } from './client.cjs';
|
|
4
5
|
import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
|
|
5
|
-
import { E as Emitter } from '../../../emitter-
|
|
6
|
+
import { E as Emitter } from '../../../emitter-D5Mu0EEH.cjs';
|
|
6
7
|
import { GetRunContext } from '../../../context.cjs';
|
|
7
|
-
import '
|
|
8
|
-
import '../../../
|
|
8
|
+
import 'pino';
|
|
9
|
+
import '../../../errors.cjs';
|
|
9
10
|
import '../../../internals/types.cjs';
|
|
10
11
|
import '../../../internals/helpers/guards.cjs';
|
|
11
|
-
import '../../../
|
|
12
|
+
import '../../../internals/serializable.cjs';
|
|
13
|
+
import 'ai';
|
|
12
14
|
import 'promise-based-task';
|
|
13
15
|
import '../../../cache/base.cjs';
|
|
14
|
-
import '../../../backend/utils.cjs';
|
|
15
16
|
import '../../../backend/constants.cjs';
|
|
16
17
|
import '../../../tools/base.cjs';
|
|
17
18
|
import 'ajv';
|
|
@@ -19,7 +20,7 @@ import '../../../internals/helpers/schema.cjs';
|
|
|
19
20
|
import 'zod';
|
|
20
21
|
import 'zod-to-json-schema';
|
|
21
22
|
import '../../../internals/helpers/promise.cjs';
|
|
22
|
-
import '
|
|
23
|
+
import '../../../template.cjs';
|
|
23
24
|
import '@ibm-cloud/watsonx-ai';
|
|
24
25
|
import 'ibm-cloud-sdk-core';
|
|
25
26
|
import '../../../backend/client.cjs';
|
|
@@ -28,6 +29,7 @@ declare class WatsonxChatModel extends ChatModel {
|
|
|
28
29
|
readonly modelId: string;
|
|
29
30
|
protected readonly client: WatsonxClient;
|
|
30
31
|
readonly emitter: ChatModelEmitter;
|
|
32
|
+
readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
|
|
31
33
|
get providerId(): string;
|
|
32
34
|
constructor(modelId?: string, client?: WatsonxClient | WatsonxClientSettings);
|
|
33
35
|
config(config: ChatConfig): this;
|
|
@@ -49,6 +51,10 @@ declare class WatsonxChatModel extends ChatModel {
|
|
|
49
51
|
client: WatsonxClient;
|
|
50
52
|
cache: ChatModelCache;
|
|
51
53
|
emitter: Emitter<ChatModelEvents>;
|
|
54
|
+
logger: Logger;
|
|
55
|
+
toolChoiceSupport: ChatModelToolChoiceSupport[];
|
|
56
|
+
toolCallFallbackViaResponseFormat: boolean;
|
|
57
|
+
modelSupportsToolCalling: boolean;
|
|
52
58
|
};
|
|
53
59
|
loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
|
|
54
60
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Logger } from '../../../logger/logger.js';
|
|
2
|
+
import { m as ChatModel, h as ChatModelEmitter, l as ChatModelToolChoiceSupport, k as ChatConfig, d as ChatModelInput, n as ChatModelOutput, C as ChatModelParameters, i as ChatModelCache, g as ChatModelEvents } from '../../../chat-BdN8hGWn.js';
|
|
2
3
|
import { Message, MessageContentPart } from '../../../backend/message.js';
|
|
3
4
|
import { WatsonxClient, WatsonxClientSettings } from './client.js';
|
|
4
5
|
import { TextChatResultChoice, TextChatUsage, TextChatParams } from '@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js';
|
|
5
|
-
import { E as Emitter } from '../../../emitter-
|
|
6
|
+
import { E as Emitter } from '../../../emitter-C3dO-s2P.js';
|
|
6
7
|
import { GetRunContext } from '../../../context.js';
|
|
7
|
-
import '
|
|
8
|
-
import '../../../
|
|
8
|
+
import 'pino';
|
|
9
|
+
import '../../../errors.js';
|
|
9
10
|
import '../../../internals/types.js';
|
|
10
11
|
import '../../../internals/helpers/guards.js';
|
|
11
|
-
import '../../../
|
|
12
|
+
import '../../../internals/serializable.js';
|
|
13
|
+
import 'ai';
|
|
12
14
|
import 'promise-based-task';
|
|
13
15
|
import '../../../cache/base.js';
|
|
14
|
-
import '../../../backend/utils.js';
|
|
15
16
|
import '../../../backend/constants.js';
|
|
16
17
|
import '../../../tools/base.js';
|
|
17
18
|
import 'ajv';
|
|
@@ -19,7 +20,7 @@ import '../../../internals/helpers/schema.js';
|
|
|
19
20
|
import 'zod';
|
|
20
21
|
import 'zod-to-json-schema';
|
|
21
22
|
import '../../../internals/helpers/promise.js';
|
|
22
|
-
import '
|
|
23
|
+
import '../../../template.js';
|
|
23
24
|
import '@ibm-cloud/watsonx-ai';
|
|
24
25
|
import 'ibm-cloud-sdk-core';
|
|
25
26
|
import '../../../backend/client.js';
|
|
@@ -28,6 +29,7 @@ declare class WatsonxChatModel extends ChatModel {
|
|
|
28
29
|
readonly modelId: string;
|
|
29
30
|
protected readonly client: WatsonxClient;
|
|
30
31
|
readonly emitter: ChatModelEmitter;
|
|
32
|
+
readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
|
|
31
33
|
get providerId(): string;
|
|
32
34
|
constructor(modelId?: string, client?: WatsonxClient | WatsonxClientSettings);
|
|
33
35
|
config(config: ChatConfig): this;
|
|
@@ -49,6 +51,10 @@ declare class WatsonxChatModel extends ChatModel {
|
|
|
49
51
|
client: WatsonxClient;
|
|
50
52
|
cache: ChatModelCache;
|
|
51
53
|
emitter: Emitter<ChatModelEvents>;
|
|
54
|
+
logger: Logger;
|
|
55
|
+
toolChoiceSupport: ChatModelToolChoiceSupport[];
|
|
56
|
+
toolCallFallbackViaResponseFormat: boolean;
|
|
57
|
+
modelSupportsToolCalling: boolean;
|
|
52
58
|
};
|
|
53
59
|
loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
|
|
54
60
|
}
|
|
@@ -8,6 +8,7 @@ import { AssistantMessage, ToolMessage, SystemMessage } from '../../../backend/m
|
|
|
8
8
|
import { parseBrokenJson } from '../../../internals/helpers/schema.js';
|
|
9
9
|
import { getEnv } from '../../../internals/env.js';
|
|
10
10
|
import { NotImplementedError } from '../../../errors.js';
|
|
11
|
+
import { Tool } from '../../../tools/base.js';
|
|
11
12
|
|
|
12
13
|
var __defProp = Object.defineProperty;
|
|
13
14
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -19,6 +20,7 @@ class WatsonxChatModel extends ChatModel {
|
|
|
19
20
|
modelId;
|
|
20
21
|
client;
|
|
21
22
|
emitter;
|
|
23
|
+
toolChoiceSupport;
|
|
22
24
|
get providerId() {
|
|
23
25
|
return "watsonx";
|
|
24
26
|
}
|
|
@@ -30,7 +32,10 @@ class WatsonxChatModel extends ChatModel {
|
|
|
30
32
|
"chat"
|
|
31
33
|
],
|
|
32
34
|
creator: this
|
|
33
|
-
})
|
|
35
|
+
}), this.toolChoiceSupport = [
|
|
36
|
+
"none",
|
|
37
|
+
"single"
|
|
38
|
+
];
|
|
34
39
|
this.client = WatsonxClient.ensure(client);
|
|
35
40
|
}
|
|
36
41
|
config(config) {
|
|
@@ -121,6 +126,22 @@ class WatsonxChatModel extends ChatModel {
|
|
|
121
126
|
parameters: await tool.getInputJsonSchema()
|
|
122
127
|
}
|
|
123
128
|
})));
|
|
129
|
+
const toolConfig = {
|
|
130
|
+
toolChoice: void 0,
|
|
131
|
+
toolChoiceOption: void 0
|
|
132
|
+
};
|
|
133
|
+
if (input.toolChoice) {
|
|
134
|
+
if (input.toolChoice instanceof Tool) {
|
|
135
|
+
toolConfig.toolChoice = {
|
|
136
|
+
type: "function",
|
|
137
|
+
function: {
|
|
138
|
+
name: input.toolChoice.name
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
} else if (this.toolChoiceSupport.includes(input.toolChoice)) {
|
|
142
|
+
toolConfig.toolChoiceOption = input.toolChoice;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
124
145
|
return {
|
|
125
146
|
modelId: this.modelId,
|
|
126
147
|
messages: input.messages.flatMap((message) => {
|
|
@@ -160,7 +181,7 @@ class WatsonxChatModel extends ChatModel {
|
|
|
160
181
|
projectId: this.client.projectId,
|
|
161
182
|
tools: isEmpty(tools) ? void 0 : tools,
|
|
162
183
|
responseFormat: void 0,
|
|
163
|
-
...input.responseFormat
|
|
184
|
+
...input.responseFormat && {
|
|
164
185
|
responseFormat: {
|
|
165
186
|
type: Type.JSON_OBJECT
|
|
166
187
|
}
|
|
@@ -171,9 +192,9 @@ class WatsonxChatModel extends ChatModel {
|
|
|
171
192
|
n: input.n,
|
|
172
193
|
maxTokens: input.maxTokens,
|
|
173
194
|
presencePenalty: input.presencePenalty,
|
|
174
|
-
toolChoice: input.toolChoice,
|
|
175
195
|
stop: input.stopSequences,
|
|
176
|
-
seed: input.seed
|
|
196
|
+
seed: input.seed,
|
|
197
|
+
...toolConfig
|
|
177
198
|
};
|
|
178
199
|
}
|
|
179
200
|
createSnapshot() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["chat.ts"],"names":["Type","WatsonxChatModel","ChatModel","client","emitter","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","id","toolName","function","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","toolChoice","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n args: parseBrokenJson(call.function.arguments),\n }),\n ),\n );\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.args),\n },\n }),\n }));\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat?.type === \"object-json\" && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n toolChoice: input.toolChoice,\n stop: input.stopSequences,\n seed: input.seed,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["chat.ts"],"names":["Type","WatsonxChatModel","ChatModel","client","emitter","toolChoiceSupport","providerId","constructor","modelId","getEnv","Emitter","root","child","namespace","creator","WatsonxClient","ensure","config","name","parameters","undefined","NotImplementedError","_create","input","run","result","instance","textChat","prepareInput","signal","messages","finishReason","usage","extractOutput","choices","ChatModelOutput","_createStream","stream","textChatStream","returnObject","raw","aborted","controller","abort","data","map","delta","choice","message","findLast","Boolean","finish_reason","completionTokens","completion_tokens","promptTokens","prompt_tokens","totalTokens","total_tokens","flatMap","content","msg","AssistantMessage","type","text","push","tool_calls","call","toolCallId","id","toolName","function","args","parseBrokenJson","arguments","refusal","filter","isTruthy","overrides","tools","Promise","all","tool","description","getInputJsonSchema","toolConfig","toolChoice","toolChoiceOption","Tool","includes","ToolMessage","role","JSON","stringify","tool_call_id","SystemMessage","toPlain","spaceId","projectId","isEmpty","responseFormat","JSON_OBJECT","topP","frequencyPenalty","temperature","n","maxTokens","presencePenalty","stop","stopSequences","seed","createSnapshot","shallowCopy","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChatConfig,\n ChatModel,\n ChatModelEmitter,\n ChatModelInput,\n ChatModelOutput,\n ChatModelParameters,\n ChatModelToolChoiceSupport,\n} from \"@/backend/chat.js\";\nimport { WatsonxClient, WatsonxClientSettings } from \"@/adapters/watsonx/backend/client.js\";\nimport { findLast, isEmpty, isTruthy } from \"remeda\";\nimport WatsonxAiMlVml_v1, {\n TextChatMessages,\n TextChatParameterTools,\n TextChatParams,\n TextChatResultChoice,\n TextChatUsage,\n} from \"@ibm-cloud/watsonx-ai/dist/watsonx-ai-ml/vml_v1.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { AssistantMessage, Message, SystemMessage, ToolMessage } from \"@/backend/message.js\";\nimport { ToolCallPart } from \"ai\";\nimport Type = WatsonxAiMlVml_v1.TextChatResponseFormat.Constants.Type;\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { NotImplementedError } from \"@/errors.js\";\nimport { Tool } from \"@/tools/base.js\";\n\nexport class WatsonxChatModel extends ChatModel {\n protected readonly client: WatsonxClient;\n public readonly emitter: ChatModelEmitter = Emitter.root.child({\n namespace: [\"backend\", \"watsonx\", \"chat\"],\n creator: this,\n });\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\"none\", \"single\"];\n\n get providerId() {\n return \"watsonx\";\n }\n\n constructor(\n public readonly modelId = getEnv(\"WATSONX_CHAT_MODEL\", \"ibm/granite-3-8b-instruct\"),\n client?: WatsonxClient | WatsonxClientSettings,\n ) {\n super();\n this.client = WatsonxClient.ensure(client);\n }\n\n config(config: ChatConfig) {\n super.config(config);\n for (const name of [\"topK\"] as (keyof ChatModelParameters)[]) {\n if (this.parameters[name] !== undefined) {\n this.parameters[name] = undefined;\n throw new NotImplementedError(\n `Setting \"${name}\" parameter is not supported for WatsonX Chat Models.`,\n );\n }\n }\n return this;\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<any>) {\n const { result } = await this.client.instance.textChat({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n });\n const { messages, finishReason, usage } = this.extractOutput(result.choices, result.usage);\n return new ChatModelOutput(messages, usage, finishReason);\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n const stream = await this.client.instance.textChatStream({\n ...(await this.prepareInput(input)),\n signal: run.signal,\n returnObject: true,\n });\n for await (const raw of stream) {\n if (run.signal.aborted) {\n stream.controller.abort(run.signal.aborted);\n break;\n }\n const { messages, finishReason, usage } = this.extractOutput(\n raw.data.choices.map(({ delta, ...choice }) => ({ ...choice, message: delta })),\n raw.data.usage,\n );\n yield new ChatModelOutput(messages, usage, finishReason);\n }\n }\n\n protected extractOutput(choices: TextChatResultChoice[], usage?: TextChatUsage) {\n return {\n finishReason: findLast(choices, (choice) => Boolean(choice?.finish_reason))\n ?.finish_reason as ChatModelOutput[\"finishReason\"],\n usage: usage\n ? {\n completionTokens: usage.completion_tokens ?? 0,\n promptTokens: usage.prompt_tokens ?? 0,\n totalTokens: usage.total_tokens ?? 0,\n }\n : undefined,\n messages: choices\n .flatMap(({ message }) => {\n const messages: Message[] = [];\n if (message?.content) {\n const msg = new AssistantMessage({ type: \"text\", text: message.content });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.tool_calls) {\n const msg = new AssistantMessage(\n message.tool_calls.map(\n (call): ToolCallPart => ({\n type: \"tool-call\",\n toolCallId: call.id,\n toolName: call.function.name,\n args: parseBrokenJson(call.function.arguments),\n }),\n ),\n );\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n if (message?.refusal) {\n const msg = new AssistantMessage({ type: \"text\", text: message.refusal });\n // msg.role = message.role || msg.role;\n messages.push(msg);\n }\n return messages;\n })\n .filter(isTruthy),\n };\n }\n\n protected async prepareInput(overrides: ChatModelInput): Promise<TextChatParams> {\n const input: ChatModelInput = { ...this.parameters, ...overrides };\n const tools: TextChatParameterTools[] = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: await tool.getInputJsonSchema(),\n },\n })),\n );\n\n const toolConfig: Pick<TextChatParams, \"toolChoice\" | \"toolChoiceOption\"> = {\n toolChoice: undefined,\n toolChoiceOption: undefined,\n };\n if (input.toolChoice) {\n if (input.toolChoice instanceof Tool) {\n toolConfig.toolChoice = {\n type: \"function\",\n function: { name: input.toolChoice.name },\n };\n } else if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolConfig.toolChoiceOption = input.toolChoice;\n }\n }\n\n return {\n modelId: this.modelId,\n messages: input.messages.flatMap((message): TextChatMessages[] => {\n if (message instanceof ToolMessage) {\n return message.content.map((content) => ({\n role: \"tool\",\n content: JSON.stringify(content.result),\n tool_call_id: content.toolCallId,\n }));\n } else if (message instanceof SystemMessage) {\n return message.content.map((content) => ({\n role: \"system\",\n content: content.text,\n }));\n } else if (message instanceof AssistantMessage) {\n return message.content.map((content) => ({\n role: \"assistant\",\n ...(content.type === \"text\" && {\n content: content.text,\n }),\n ...(content.type === \"tool-call\" && {\n id: content.toolCallId,\n type: \"function\",\n function: {\n name: content.toolName,\n arguments: JSON.stringify(content.args),\n },\n }),\n }));\n } else {\n return [message.toPlain()];\n }\n }),\n spaceId: this.client.spaceId,\n projectId: this.client.projectId,\n tools: isEmpty(tools) ? undefined : tools,\n responseFormat: undefined,\n ...(input.responseFormat && {\n responseFormat: { type: Type.JSON_OBJECT },\n }),\n topP: input.topP,\n frequencyPenalty: input.frequencyPenalty,\n temperature: input.temperature,\n n: input.n,\n maxTokens: input.maxTokens,\n presencePenalty: input.presencePenalty,\n stop: input.stopSequences,\n seed: input.seed,\n ...toolConfig,\n };\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n modelId: this.modelId,\n parameters: shallowCopy(this.parameters),\n client: this.client,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|