langchain-ai / langchainjs

🦜🔗 Build context-aware reasoning applications 🦜🔗
https://js.langchain.com/docs/
MIT License
11.8k stars 1.97k forks source link

Single-Step Tool Use (Function Calling) not working With Cohere #5113

Closed Royal-lobster closed 2 months ago

Royal-lobster commented 2 months ago

Checked other resources

Example Code

Following the example from https://docs.cohere.com/docs/tool-use

import { ChatCohere } from "@langchain/cohere";
import { HumanMessage } from "@langchain/core/messages";
import type { Cohere } from "cohere-ai";
import endent from "endent";

// tool descriptions that the model has access to
const tools: Cohere.ChatRequest["tools"] = [
  {
    name: "query_daily_sales_report",
    description:
      "Connects to a database to retrieve overall sales volumes and sales information for a given day.",
    parameterDefinitions: {
      day: {
        description:
          "Retrieves sales data for this day, formatted as YYYY-MM-DD.",
        type: "str",
        required: true,
      },
    },
  },
  {
    name: "query_product_catalog",
    description:
      "Connects to a a product catalog with information about all the products being sold, including categories, prices, and stock levels.",
    parameterDefinitions: {
      category: {
        description:
          "Retrieves product information data for all products in this category.",
        type: "str",
        required: true,
      },
    },
  },
];

// preamble containing instructions about the task and the desired style for the output.
const preamble = endent`
  ## Task & Context
  You help people answer their questions and other requests interactively. You will be asked a very wide array of requests on all kinds of topics. You will be equipped with a wide range of search engines or similar tools to help you, which you use to research your answer. You should focus on serving the user's needs as best you can, which will be wide-ranging.

  ## Style Guide
  Unless the user asks for a different style of answer, you should answer in full sentences, using proper grammar and spelling.
`;

const model = new ChatCohere({
  temperature: 0,
  model: "command-r-plus",
}).bind({
  preamble,
  tools,
});

const result = await model.invoke([
  new HumanMessage(
    "Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the 'Electronics' category, for example their prices and stock levels?"
  ),
]);

console.log(result);

Error Message and Stack Trace (if applicable)

No response

Description

ChatCohere .bind() method is not passing down tools (as per cohere docs) to Cohere Client

const model = new ChatCohere({
  temperature: 0,
  model: "command-r-plus",
}).bind({
  preamble,
  tools,
});

Here is the request that is getting sent from machine with the code attached

curl 'https://api.cohere.ai/v1/chat' \
-X POST \
-H 'Host: api.cohere.ai' \
-H 'Connection: keep-alive' \
-H 'Accept: */*' \
-H 'Authorization: Bearer [SECRET]' \
-H 'Content-Type: application/json' \
--data-raw '{"model":"command-r-plus","preamble":"## Task & Context\nYou help people answer their questions and other requests interactively. You will be asked a very wide array of requests on all kinds of topics. You will be equipped with a wide range of search engines or similar tools to help you, which you use to research your answer. You should focus on serving the user'\''s needs as best you can, which will be wide-ranging.\n\n## Style Guide\nUnless the user asks for a different style of answer, you should answer in full sentences, using proper grammar and spelling.","temperature":0,"message":"Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the '\''Electronics'\'' category, for example their prices and stock levels?","chat_history":[],"stream":false}' 

System Info

'./chat_models/googlevertexai': {
      types: {
        import: './chat_models/googlevertexai.d.ts',
        require: './chat_models/googlevertexai.d.cts',
        default: './chat_models/googlevertexai.d.ts'
      },
      import: './chat_models/googlevertexai.js',
      require: './chat_models/googlevertexai.cjs'
    },
    './chat_models/googlevertexai/web': {
      types: {
        import: './chat_models/googlevertexai/web.d.ts',
        require: './chat_models/googlevertexai/web.d.cts',
        default: './chat_models/googlevertexai/web.d.ts'
      },
      import: './chat_models/googlevertexai/web.js',
      require: './chat_models/googlevertexai/web.cjs'
    },
    './chat_models/googlepalm': {
      types: {
        import: './chat_models/googlepalm.d.ts',
        require: './chat_models/googlepalm.d.cts',
        default: './chat_models/googlepalm.d.ts'
      },
      import: './chat_models/googlepalm.js',
      require: './chat_models/googlepalm.cjs'
    },
    './chat_models/fireworks': {
      types: {
        import: './chat_models/fireworks.d.ts',
        require: './chat_models/fireworks.d.cts',
        default: './chat_models/fireworks.d.ts'
      },
      import: './chat_models/fireworks.js',
      require: './chat_models/fireworks.cjs'
    },
    './chat_models/baiduwenxin': {
      types: {
        import: './chat_models/baiduwenxin.d.ts',
        require: './chat_models/baiduwenxin.d.cts',
        default: './chat_models/baiduwenxin.d.ts'
      },
      import: './chat_models/baiduwenxin.js',
      require: './chat_models/baiduwenxin.cjs'
    },
    './chat_models/iflytek_xinghuo': {
      types: {
        import: './chat_models/iflytek_xinghuo.d.ts',
        require: './chat_models/iflytek_xinghuo.d.cts',
        default: './chat_models/iflytek_xinghuo.d.ts'
      },
      import: './chat_models/iflytek_xinghuo.js',
      require: './chat_models/iflytek_xinghuo.cjs'
    },
    './chat_models/iflytek_xinghuo/web': {
      types: {
        import: './chat_models/iflytek_xinghuo/web.d.ts',
        require: './chat_models/iflytek_xinghuo/web.d.cts',
        default: './chat_models/iflytek_xinghuo/web.d.ts'
      },
      import: './chat_models/iflytek_xinghuo/web.js',
      require: './chat_models/iflytek_xinghuo/web.cjs'
    },
    './chat_models/ollama': {
      types: {
        import: './chat_models/ollama.d.ts',
        require: './chat_models/ollama.d.cts',
        default: './chat_models/ollama.d.ts'
      },
      import: './chat_models/ollama.js',
      require: './chat_models/ollama.cjs'
    },
    './chat_models/minimax': {
      types: {
        import: './chat_models/minimax.d.ts',
        require: './chat_models/minimax.d.cts',
        default: './chat_models/minimax.d.ts'
      },
      import: './chat_models/minimax.js',
      require: './chat_models/minimax.cjs'
    },
    './chat_models/llama_cpp': {
      types: {
        import: './chat_models/llama_cpp.d.ts',
        require: './chat_models/llama_cpp.d.cts',
        default: './chat_models/llama_cpp.d.ts'
      },
      import: './chat_models/llama_cpp.js',
      require: './chat_models/llama_cpp.cjs'
    },
    './chat_models/yandex': {
      types: {
        import: './chat_models/yandex.d.ts',
        require: './chat_models/yandex.d.cts',
        default: './chat_models/yandex.d.ts'
      },
      import: './chat_models/yandex.js',
      require: './chat_models/yandex.cjs'
    },
    './chat_models/fake': {
      types: {
        import: './chat_models/fake.d.ts',
        require: './chat_models/fake.d.cts',
        default: './chat_models/fake.d.ts'
      },
      import: './chat_models/fake.js',
      require: './chat_models/fake.cjs'
    },
    './schema': {
      types: {
        import: './schema.d.ts',
        require: './schema.d.cts',
        default: './schema.d.ts'
      },
      import: './schema.js',
      require: './schema.cjs'
    },
    './schema/document': {
      types: {
        import: './schema/document.d.ts',
        require: './schema/document.d.cts',
        default: './schema/document.d.ts'
      },
      import: './schema/document.js',
      require: './schema/document.cjs'
    },
    './schema/output_parser': {
      types: {
        import: './schema/output_parser.d.ts',
        require: './schema/output_parser.d.cts',
        default: './schema/output_parser.d.ts'
      },
      import: './schema/output_parser.js',
      require: './schema/output_parser.cjs'
    },
    './schema/prompt_template': {
      types: {
        import: './schema/prompt_template.d.ts',
        require: './schema/prompt_template.d.cts',
        default: './schema/prompt_template.d.ts'
      },
      import: './schema/prompt_template.js',
      require: './schema/prompt_template.cjs'
    },
    './schema/query_constructor': {
      types: {
        import: './schema/query_constructor.d.ts',
        require: './schema/query_constructor.d.cts',
        default: './schema/query_constructor.d.ts'
      },
      import: './schema/query_constructor.js',
      require: './schema/query_constructor.cjs'
    },
    './schema/retriever': {
      types: {
        import: './schema/retriever.d.ts',
        require: './schema/retriever.d.cts',
        default: './schema/retriever.d.ts'
      },
      import: './schema/retriever.js',
      require: './schema/retriever.cjs'
    },
    './schema/runnable': {
      types: {
        import: './schema/runnable.d.ts',
        require: './schema/runnable.d.cts',
        default: './schema/runnable.d.ts'
      },
      import: './schema/runnable.js',
      require: './schema/runnable.cjs'
    },
    './schema/storage': {
      types: {
        import: './schema/storage.d.ts',
        require: './schema/storage.d.cts',
        default: './schema/storage.d.ts'
      },
      import: './schema/storage.js',
      require: './schema/storage.cjs'
    },
    './sql_db': {
      types: {
        import: './sql_db.d.ts',
        require: './sql_db.d.cts',
        default: './sql_db.d.ts'
      },
      import: './sql_db.js',
      require: './sql_db.cjs'
    },
    './callbacks': {
      types: {
        import: './callbacks.d.ts',
        require: './callbacks.d.cts',
        default: './callbacks.d.ts'
      },
      import: './callbacks.js',
      require: './callbacks.cjs'
    },
    './callbacks/handlers/llmonitor': {
      types: {
        import: './callbacks/handlers/llmonitor.d.ts',
        require: './callbacks/handlers/llmonitor.d.cts',
        default: './callbacks/handlers/llmonitor.d.ts'
      },
      import: './callbacks/handlers/llmonitor.js',
      require: './callbacks/handlers/llmonitor.cjs'
    },
    './output_parsers': {
      types: {
        import: './output_parsers.d.ts',
        require: './output_parsers.d.cts',
        default: './output_parsers.d.ts'
      },
      import: './output_parsers.js',
      require: './output_parsers.cjs'
    },
    './output_parsers/expression': {
      types: {
        import: './output_parsers/expression.d.ts',
        require: './output_parsers/expression.d.cts',
        default: './output_parsers/expression.d.ts'
      },
      import: './output_parsers/expression.js',
      require: './output_parsers/expression.cjs'
    },
    './retrievers/amazon_kendra': {
      types: {
        import: './retrievers/amazon_kendra.d.ts',
        require: './retrievers/amazon_kendra.d.cts',
        default: './retrievers/amazon_kendra.d.ts'
      },
      import: './retrievers/amazon_kendra.js',
      require: './retrievers/amazon_kendra.cjs'
    },
    './retrievers/remote': {
      types: {
        import: './retrievers/remote.d.ts',
        require: './retrievers/remote.d.cts',
        default: './retrievers/remote.d.ts'
      },
      import: './retrievers/remote.js',
      require: './retrievers/remote.cjs'
    },
    './retrievers/supabase': {
      types: {
        import: './retrievers/supabase.d.ts',
        require: './retrievers/supabase.d.cts',
        default: './retrievers/supabase.d.ts'
      },
      import: './retrievers/supabase.js',
      require: './retrievers/supabase.cjs'
    },
    './retrievers/zep': {
      types: {
        import: './retrievers/zep.d.ts',
        require: './retrievers/zep.d.cts',
        default: './retrievers/zep.d.ts'
      },
      import: './retrievers/zep.js',
      require: './retrievers/zep.cjs'
    },
    './retrievers/metal': {
      types: {
        import: './retrievers/metal.d.ts',
        require: './retrievers/metal.d.cts',
        default: './retrievers/metal.d.ts'
      },
      import: './retrievers/metal.js',
      require: './retrievers/metal.cjs'
    },
    './retrievers/chaindesk': {
      types: {
        import: './retrievers/chaindesk.d.ts',
        require: './retrievers/chaindesk.d.cts',
        default: './retrievers/chaindesk.d.ts'
      },
      import: './retrievers/chaindesk.js',
      require: './retrievers/chaindesk.cjs'
    },
    './retrievers/databerry': {
      types: {
        import: './retrievers/databerry.d.ts',
        require: './retrievers/databerry.d.cts',
        default: './retrievers/databerry.d.ts'
      },
      import: './retrievers/databerry.js',
      require: './retrievers/databerry.cjs'
    },
    './retrievers/contextual_compression': {
      types: {
        import: './retrievers/contextual_compression.d.ts',
        require: './retrievers/contextual_compression.d.cts',
        default: './retrievers/contextual_compression.d.ts'
      },
      import: './retrievers/contextual_compression.js',
      require: './retrievers/contextual_compression.cjs'
    },
    './retrievers/document_compressors': {
      types: {
        import: './retrievers/document_compressors.d.ts',
        require: './retrievers/document_compressors.d.cts',
        default: './retrievers/document_compressors.d.ts'
      },
      import: './retrievers/document_compressors.js',
      require: './retrievers/document_compressors.cjs'
    },
    './retrievers/multi_query': {
      types: {
        import: './retrievers/multi_query.d.ts',
        require: './retrievers/multi_query.d.cts',
        default: './retrievers/multi_query.d.ts'
      },
      import: './retrievers/multi_query.js',
      require: './retrievers/multi_query.cjs'
    },
    './retrievers/multi_vector': {
      types: {
        import: './retrievers/multi_vector.d.ts',
        require: './retrievers/multi_vector.d.cts',
        default: './retrievers/multi_vector.d.ts'
      },
      import: './retrievers/multi_vector.js',
      require: './retrievers/multi_vector.cjs'
    },
    './retrievers/parent_document': {
      types: {
        import: './retrievers/parent_document.d.ts',
        require: './retrievers/parent_document.d.cts',
        default: './retrievers/parent_document.d.ts'
      },
      import: './retrievers/parent_document.js',
      require: './retrievers/parent_document.cjs'
    },
    './retrievers/vectara_summary': {
      types: {
        import: './retrievers/vectara_summary.d.ts',
        require: './retrievers/vectara_summary.d.cts',
        default: './retrievers/vectara_summary.d.ts'
      },
      import: './retrievers/vectara_summary.js',
      require: './retrievers/vectara_summary.cjs'
    },
    './retrievers/tavily_search_api': {
      types: {
        import: './retrievers/tavily_search_api.d.ts',
        require: './retrievers/tavily_search_api.d.cts',
        default: './retrievers/tavily_search_api.d.ts'
      },
      import: './retrievers/tavily_search_api.js',
      require: './retrievers/tavily_search_api.cjs'
    },
    './retrievers/time_weighted': {
      types: {
        import: './retrievers/time_weighted.d.ts',
        require: './retrievers/time_weighted.d.cts',
        default: './retrievers/time_weighted.d.ts'
      },
      import: './retrievers/time_weighted.js',
      require: './retrievers/time_weighted.cjs'
    },
    './retrievers/document_compressors/chain_extract': {
      types: {
        import: './retrievers/document_compressors/chain_extract.d.ts',
        require: './retrievers/document_compressors/chain_extract.d.cts',
        default: './retrievers/document_compressors/chain_extract.d.ts'
      },
      import: './retrievers/document_compressors/chain_extract.js',
      require: './retrievers/document_compressors/chain_extract.cjs'
    },
    './retrievers/document_compressors/embeddings_filter': {
      types: {
        import: './retrievers/document_compressors/embeddings_filter.d.ts',
        require: './retrievers/document_compressors/embeddings_filter.d.cts',
        default: './retrievers/document_compressors/embeddings_filter.d.ts'
      },
      import: './retrievers/document_compressors/embeddings_filter.js',
      require: './retrievers/document_compressors/embeddings_filter.cjs'
    },
    './retrievers/hyde': {
      types: {
        import: './retrievers/hyde.d.ts',
        require: './retrievers/hyde.d.cts',
        default: './retrievers/hyde.d.ts'
      },
      import: './retrievers/hyde.js',
      require: './retrievers/hyde.cjs'
    },
    './retrievers/score_threshold': {
      types: {
        import: './retrievers/score_threshold.d.ts',
        require: './retrievers/score_threshold.d.cts',
        default: './retrievers/score_threshold.d.ts'
      },
      import: './retrievers/score_threshold.js',
      require: './retrievers/score_threshold.cjs'
    },
    './retrievers/self_query': {
      types: {
        import: './retrievers/self_query.d.ts',
        require: './retrievers/self_query.d.cts',
        default: './retrievers/self_query.d.ts'
      },
      import: './retrievers/self_query.js',
      require: './retrievers/self_query.cjs'
    },
    './retrievers/self_query/chroma': {
      types: {
        import: './retrievers/self_query/chroma.d.ts',
        require: './retrievers/self_query/chroma.d.cts',
        default: './retrievers/self_query/chroma.d.ts'
      },
      import: './retrievers/self_query/chroma.js',
      require: './retrievers/self_query/chroma.cjs'
    },
    './retrievers/self_query/functional': {
      types: {
        import: './retrievers/self_query/functional.d.ts',
        require: './retrievers/self_query/functional.d.cts',
        default: './retrievers/self_query/functional.d.ts'
      },
      import: './retrievers/self_query/functional.js',
      require: './retrievers/self_query/functional.cjs'
    },
    './retrievers/self_query/pinecone': {
      types: {
        import: './retrievers/self_query/pinecone.d.ts',
        require: './retrievers/self_query/pinecone.d.cts',
        default: './retrievers/self_query/pinecone.d.ts'
      },
      import: './retrievers/self_query/pinecone.js',
      require: './retrievers/self_query/pinecone.cjs'
    },
    './retrievers/self_query/supabase': {
      types: {
        import: './retrievers/self_query/supabase.d.ts',
        require: './retrievers/self_query/supabase.d.cts',
        default: './retrievers/self_query/supabase.d.ts'
      },
      import: './retrievers/self_query/supabase.js',
      require: './retrievers/self_query/supabase.cjs'
    },
    './retrievers/self_query/weaviate': {
      types: {
        import: './retrievers/self_query/weaviate.d.ts',
        require: './retrievers/self_query/weaviate.d.cts',
        default: './retrievers/self_query/weaviate.d.ts'
      },
      import: './retrievers/self_query/weaviate.js',
      require: './retrievers/self_query/weaviate.cjs'
    },
    './retrievers/self_query/vectara': {
      types: {
        import: './retrievers/self_query/vectara.d.ts',
        require: './retrievers/self_query/vectara.d.cts',
        default: './retrievers/self_query/vectara.d.ts'
      },
      import: './retrievers/self_query/vectara.js',
      require: './retrievers/self_query/vectara.cjs'
    },
    './retrievers/vespa': {
      types: {
        import: './retrievers/vespa.d.ts',
        require: './retrievers/vespa.d.cts',
        default: './retrievers/vespa.d.ts'
      },
      import: './retrievers/vespa.js',
      require: './retrievers/vespa.cjs'
    },
    './retrievers/matryoshka_retriever': {
      types: {
        import: './retrievers/matryoshka_retriever.d.ts',
        require: './retrievers/matryoshka_retriever.d.cts',
        default: './retrievers/matryoshka_retriever.d.ts'
      },
      import: './retrievers/matryoshka_retriever.js',
      require: './retrievers/matryoshka_retriever.cjs'
    },
    './cache': {
      types: {
        import: './cache.d.ts',
        require: './cache.d.cts',
        default: './cache.d.ts'
      },
      import: './cache.js',
      require: './cache.cjs'
    },
    './cache/cloudflare_kv': {
      types: {
        import: './cache/cloudflare_kv.d.ts',
        require: './cache/cloudflare_kv.d.cts',
        default: './cache/cloudflare_kv.d.ts'
      },
      import: './cache/cloudflare_kv.js',
      require: './cache/cloudflare_kv.cjs'
    },
    './cache/momento': {
      types: {
        import: './cache/momento.d.ts',
        require: './cache/momento.d.cts',
        default: './cache/momento.d.ts'
      },
      import: './cache/momento.js',
      require: './cache/momento.cjs'
    },
    './cache/redis': {
      types: {
        import: './cache/redis.d.ts',
        require: './cache/redis.d.cts',
        default: './cache/redis.d.ts'
      },
      import: './cache/redis.js',
      require: './cache/redis.cjs'
    },
    './cache/ioredis': {
      types: {
        import: './cache/ioredis.d.ts',
        require: './cache/ioredis.d.cts',
        default: './cache/ioredis.d.ts'
      },
      import: './cache/ioredis.js',
      require: './cache/ioredis.cjs'
    },
    './cache/file_system': {
      types: {
        import: './cache/file_system.d.ts',
        require: './cache/file_system.d.cts',
        default: './cache/file_system.d.ts'
      },
      import: './cache/file_system.js',
      require: './cache/file_system.cjs'
    },
    './cache/upstash_redis': {
      types: {
        import: './cache/upstash_redis.d.ts',
        require: './cache/upstash_redis.d.cts',
        default: './cache/upstash_redis.d.ts'
      },
      import: './cache/upstash_redis.js',
      require: './cache/upstash_redis.cjs'
    },
    './stores/doc/in_memory': {
      types: {
        import: './stores/doc/in_memory.d.ts',
        require: './stores/doc/in_memory.d.cts',
        default: './stores/doc/in_memory.d.ts'
      },
      import: './stores/doc/in_memory.js',
      require: './stores/doc/in_memory.cjs'
    },
    './stores/doc/gcs': {
      types: {
        import: './stores/doc/gcs.d.ts',
        require: './stores/doc/gcs.d.cts',
        default: './stores/doc/gcs.d.ts'
      },
      import: './stores/doc/gcs.js',
      require: './stores/doc/gcs.cjs'
    },
    './stores/file/in_memory': {
      types: {
        import: './stores/file/in_memory.d.ts',
        require: './stores/file/in_memory.d.cts',
        default: './stores/file/in_memory.d.ts'
      },
      import: './stores/file/in_memory.js',
      require: './stores/file/in_memory.cjs'
    },
    './stores/file/node': {
      types: {
        import: './stores/file/node.d.ts',
        require: './stores/file/node.d.cts',
        default: './stores/file/node.d.ts'
      },
      import: './stores/file/node.js',
      require: './stores/file/node.cjs'
    },
    './stores/message/cassandra': {
      types: {
        import: './stores/message/cassandra.d.ts',
        require: './stores/message/cassandra.d.cts',
        default: './stores/message/cassandra.d.ts'
      },
      import: './stores/message/cassandra.js',
      require: './stores/message/cassandra.cjs'
    },
    './stores/message/convex': {
      types: {
        import: './stores/message/convex.d.ts',
        require: './stores/message/convex.d.cts',
        default: './stores/message/convex.d.ts'
      },
      import: './stores/message/convex.js',
      require: './stores/message/convex.cjs'
    },
    './stores/message/cloudflare_d1': {
      types: {
        import: './stores/message/cloudflare_d1.d.ts',
        require: './stores/message/cloudflare_d1.d.cts',
        default: './stores/message/cloudflare_d1.d.ts'
      },
      import: './stores/message/cloudflare_d1.js',
      require: './stores/message/cloudflare_d1.cjs'
    },
    './stores/message/in_memory': {
      types: {
        import: './stores/message/in_memory.d.ts',
        require: './stores/message/in_memory.d.cts',
        default: './stores/message/in_memory.d.ts'
      },
      import: './stores/message/in_memory.js',
      require: './stores/message/in_memory.cjs'
    },
    './stores/message/dynamodb': {
      types: {
        import: './stores/message/dynamodb.d.ts',
        require: './stores/message/dynamodb.d.cts',
        default: './stores/message/dynamodb.d.ts'
      },
      import: './stores/message/dynamodb.js',
      require: './stores/message/dynamodb.cjs'
    },
    './stores/message/firestore': {
      types: {
        import: './stores/message/firestore.d.ts',
        require: './stores/message/firestore.d.cts',
        default: './stores/message/firestore.d.ts'
      },
      import: './stores/message/firestore.js',
      require: './stores/message/firestore.cjs'
    },
    './stores/message/momento': {
      types: {
        import: './stores/message/momento.d.ts',
        require: './stores/message/momento.d.cts',
        default: './stores/message/momento.d.ts'
      },
      import: './stores/message/momento.js',
      require: './stores/message/momento.cjs'
    },
    './stores/message/mongodb': {
      types: {
        import: './stores/message/mongodb.d.ts',
        require: './stores/message/mongodb.d.cts',
        default: './stores/message/mongodb.d.ts'
      },
      import: './stores/message/mongodb.js',
      require: './stores/message/mongodb.cjs'
    },
    './stores/message/redis': {
      types: {
        import: './stores/message/redis.d.ts',
        require: './stores/message/redis.d.cts',
        default: './stores/message/redis.d.ts'
      },
      import: './stores/message/redis.js',
      require: './stores/message/redis.cjs'
    },
    './stores/message/ioredis': {
      types: {
        import: './stores/message/ioredis.d.ts',
        require: './stores/message/ioredis.d.cts',
        default: './stores/message/ioredis.d.ts'
      },
      import: './stores/message/ioredis.js',
      require: './stores/message/ioredis.cjs'
    },
    './stores/message/upstash_redis': {
      types: {
        import: './stores/message/upstash_redis.d.ts',
        require: './stores/message/upstash_redis.d.cts',
        default: './stores/message/upstash_redis.d.ts'
      },
      import: './stores/message/upstash_redis.js',
      require: './stores/message/upstash_redis.cjs'
    },
    './stores/message/planetscale': {
      types: {
        import: './stores/message/planetscale.d.ts',
        require: './stores/message/planetscale.d.cts',
        default: './stores/message/planetscale.d.ts'
      },
      import: './stores/message/planetscale.js',
      require: './stores/message/planetscale.cjs'
    },
    './stores/message/xata': {
      types: {
        import: './stores/message/xata.d.ts',
        require: './stores/message/xata.d.cts',
        default: './stores/message/xata.d.ts'
      },
      import: './stores/message/xata.js',
      require: './stores/message/xata.cjs'
    },
    './storage/convex': {
      types: {
        import: './storage/convex.d.ts',
        require: './storage/convex.d.cts',
        default: './storage/convex.d.ts'
      },
      import: './storage/convex.js',
      require: './storage/convex.cjs'
    },
    './storage/encoder_backed': {
      types: {
        import: './storage/encoder_backed.d.ts',
        require: './storage/encoder_backed.d.cts',
        default: './storage/encoder_backed.d.ts'
      },
      import: './storage/encoder_backed.js',
      require: './storage/encoder_backed.cjs'
    },
    './storage/in_memory': {
      types: {
        import: './storage/in_memory.d.ts',
        require: './storage/in_memory.d.cts',
        default: './storage/in_memory.d.ts'
      },
      import: './storage/in_memory.js',
      require: './storage/in_memory.cjs'
    },
    './storage/ioredis': {
      types: {
        import: './storage/ioredis.d.ts',
        require: './storage/ioredis.d.cts',
        default: './storage/ioredis.d.ts'
      },
      import: './storage/ioredis.js',
      require: './storage/ioredis.cjs'
    },
    './storage/vercel_kv': {
      types: {
        import: './storage/vercel_kv.d.ts',
        require: './storage/vercel_kv.d.cts',
        default: './storage/vercel_kv.d.ts'
      },
      import: './storage/vercel_kv.js',
      require: './storage/vercel_kv.cjs'
    },
    './storage/upstash_redis': {
      types: {
        import: './storage/upstash_redis.d.ts',
        require: './storage/upstash_redis.d.cts',
        default: './storage/upstash_redis.d.ts'
      },
      import: './storage/upstash_redis.js',
      require: './storage/upstash_redis.cjs'
    },
    './storage/file_system': {
      types: {
        import: './storage/file_system.d.ts',
        require: './storage/file_system.d.cts',
        default: './storage/file_system.d.ts'
      },
      import: './storage/file_system.js',
      require: './storage/file_system.cjs'
    },
    './graphs/neo4j_graph': {
      types: {
        import: './graphs/neo4j_graph.d.ts',
        require: './graphs/neo4j_graph.d.cts',
        default: './graphs/neo4j_graph.d.ts'
      },
      import: './graphs/neo4j_graph.js',
      require: './graphs/neo4j_graph.cjs'
    },
    './hub': {
      types: {
        import: './hub.d.ts',
        require: './hub.d.cts',
        default: './hub.d.ts'
      },
      import: './hub.js',
      require: './hub.cjs'
    },
    './util/convex': {
      types: {
        import: './util/convex.d.ts',
        require: './util/convex.d.cts',
        default: './util/convex.d.ts'
      },
      import: './util/convex.js',
      require: './util/convex.cjs'
    },
    './util/document': {
      types: {
        import: './util/document.d.ts',
        require: './util/document.d.cts',
        default: './util/document.d.ts'
      },
      import: './util/document.js',
      require: './util/document.cjs'
    },
    './util/math': {
      types: {
        import: './util/math.d.ts',
        require: './util/math.d.cts',
        default: './util/math.d.ts'
      },
      import: './util/math.js',
      require: './util/math.cjs'
    },
    './util/time': {
      types: {
        import: './util/time.d.ts',
        require: './util/time.d.cts',
        default: './util/time.d.ts'
      },
      import: './util/time.js',
      require: './util/time.cjs'
    },
    './experimental/autogpt': {
      types: {
        import: './experimental/autogpt.d.ts',
        require: './experimental/autogpt.d.cts',
        default: './experimental/autogpt.d.ts'
      },
      import: './experimental/autogpt.js',
      require: './experimental/autogpt.cjs'
    },
    './experimental/openai_assistant': {
      types: {
        import: './experimental/openai_assistant.d.ts',
        require: './experimental/openai_assistant.d.cts',
        default: './experimental/openai_assistant.d.ts'
      },
      import: './experimental/openai_assistant.js',
      require: './experimental/openai_assistant.cjs'
    },
    './experimental/openai_files': {
      types: {
        import: './experimental/openai_files.d.ts',
        require: './experimental/openai_files.d.cts',
        default: './experimental/openai_files.d.ts'
      },
      import: './experimental/openai_files.js',
      require: './experimental/openai_files.cjs'
    },
    './experimental/babyagi': {
      types: {
        import: './experimental/babyagi.d.ts',
        require: './experimental/babyagi.d.cts',
        default: './experimental/babyagi.d.ts'
      },
      import: './experimental/babyagi.js',
      require: './experimental/babyagi.cjs'
    },
    './experimental/generative_agents': {
      types: {
        import: './experimental/generative_agents.d.ts',
        require: './experimental/generative_agents.d.cts',
        default: './experimental/generative_agents.d.ts'
      },
      import: './experimental/generative_agents.js',
      require: './experimental/generative_agents.cjs'
    },
    './experimental/plan_and_execute': {
      types: {
        import: './experimental/plan_and_execute.d.ts',
        require: './experimental/plan_and_execute.d.cts',
        default: './experimental/plan_and_execute.d.ts'
      },
      import: './experimental/plan_and_execute.js',
      require: './experimental/plan_and_execute.cjs'
    },
    './experimental/multimodal_embeddings/googlevertexai': {
      types: {
        import: './experimental/multimodal_embeddings/googlevertexai.d.ts',
        require: './experimental/multimodal_embeddings/googlevertexai.d.cts',
        default: './experimental/multimodal_embeddings/googlevertexai.d.ts'
      },
      import: './experimental/multimodal_embeddings/googlevertexai.js',
      require: './experimental/multimodal_embeddings/googlevertexai.cjs'
    },
    './experimental/chat_models/anthropic_functions': {
      types: {
        import: './experimental/chat_models/anthropic_functions.d.ts',
        require: './experimental/chat_models/anthropic_functions.d.cts',
        default: './experimental/chat_models/anthropic_functions.d.ts'
      },
      import: './experimental/chat_models/anthropic_functions.js',
      require: './experimental/chat_models/anthropic_functions.cjs'
    },
    './experimental/chat_models/bittensor': {
      types: {
        import: './experimental/chat_models/bittensor.d.ts',
        require: './experimental/chat_models/bittensor.d.cts',
        default: './experimental/chat_models/bittensor.d.ts'
      },
      import: './experimental/chat_models/bittensor.js',
      require: './experimental/chat_models/bittensor.cjs'
    },
    './experimental/chat_models/ollama_functions': {
      types: {
        import: './experimental/chat_models/ollama_functions.d.ts',
        require: './experimental/chat_models/ollama_functions.d.cts',
        default: './experimental/chat_models/ollama_functions.d.ts'
      },
      import: './experimental/chat_models/ollama_functions.js',
      require: './experimental/chat_models/ollama_functions.cjs'
    },
    './experimental/llms/bittensor': {
      types: {
        import: './experimental/llms/bittensor.d.ts',
        require: './experimental/llms/bittensor.d.cts',
        default: './experimental/llms/bittensor.d.ts'
      },
      import: './experimental/llms/bittensor.js',
      require: './experimental/llms/bittensor.cjs'
    },
    './experimental/hubs/makersuite/googlemakersuitehub': {
      types: {
        import: './experimental/hubs/makersuite/googlemakersuitehub.d.ts',
        require: './experimental/hubs/makersuite/googlemakersuitehub.d.cts',
        default: './experimental/hubs/makersuite/googlemakersuitehub.d.ts'
      },
      import: './experimental/hubs/makersuite/googlemakersuitehub.js',
      require: './experimental/hubs/makersuite/googlemakersuitehub.cjs'
    },
    './experimental/chains/violation_of_expectations': {
      types: {
        import: './experimental/chains/violation_of_expectations.d.ts',
        require: './experimental/chains/violation_of_expectations.d.cts',
        default: './experimental/chains/violation_of_expectations.d.ts'
      },
      import: './experimental/chains/violation_of_expectations.js',
      require: './experimental/chains/violation_of_expectations.cjs'
    },
    './experimental/masking': {
      types: {
        import: './experimental/masking.d.ts',
        require: './experimental/masking.d.cts',
        default: './experimental/masking.d.ts'
      },
      import: './experimental/masking.js',
      require: './experimental/masking.cjs'
    },
    './experimental/prompts/custom_format': {
      types: {
        import: './experimental/prompts/custom_format.d.ts',
        require: './experimental/prompts/custom_format.d.cts',
        default: './experimental/prompts/custom_format.d.ts'
      },
      import: './experimental/prompts/custom_format.js',
      require: './experimental/prompts/custom_format.cjs'
    },
    './experimental/prompts/handlebars': {
      types: {
        import: './experimental/prompts/handlebars.d.ts',
        require: './experimental/prompts/handlebars.d.cts',
        default: './experimental/prompts/handlebars.d.ts'
      },
      import: './experimental/prompts/handlebars.js',
      require: './experimental/prompts/handlebars.cjs'
    },
    './experimental/tools/pyinterpreter': {
      types: {
        import: './experimental/tools/pyinterpreter.d.ts',
        require: './experimental/tools/pyinterpreter.d.cts',
        default: './experimental/tools/pyinterpreter.d.ts'
      },
      import: './experimental/tools/pyinterpreter.js',
      require: './experimental/tools/pyinterpreter.cjs'
    },
    './evaluation': {
      types: {
        import: './evaluation.d.ts',
        require: './evaluation.d.cts',
        default: './evaluation.d.ts'
      },
      import: './evaluation.js',
      require: './evaluation.cjs'
    },
    './smith': {
      types: {
        import: './smith.d.ts',
        require: './smith.d.cts',
        default: './smith.d.ts'
      },
      import: './smith.js',
      require: './smith.cjs'
    },
    './runnables': {
      types: {
        import: './runnables.d.ts',
        require: './runnables.d.cts',
        default: './runnables.d.ts'
      },
      import: './runnables.js',
      require: './runnables.cjs'
    },
    './runnables/remote': {
      types: {
        import: './runnables/remote.d.ts',
        require: './runnables/remote.d.cts',
        default: './runnables/remote.d.ts'
      },
      import: './runnables/remote.js',
      require: './runnables/remote.cjs'
    },
    './indexes': {
      types: {
        import: './indexes.d.ts',
        require: './indexes.d.cts',
        default: './indexes.d.ts'
      },
      import: './indexes.js',
      require: './indexes.cjs'
    },
    './package.json': './package.json'
  },
  gitHead: '9ac7644ae320a3ab4773260889cc236b4c2418f4',
  dist: {
    integrity: 'sha512-IrRd839x8eAmDutHNDMHGzIjufyWt/ckJrnRB2WifIJmtLWNRNQo5jZd7toeBU0UOVOQxoPtQGYf8lR0ar7vIQ==',
    shasum: '959f0f023975092569b49f1f07fe60c11c643530',
    tarball: 'https://registry.npmjs.org/langchain/-/langchain-0.1.33.tgz',
    fileCount: 2819,
    unpackedSize: 4074073,
    signatures: [
      {
        keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA',
        sig: 'MEQCIAf4sqFlKNYc5CB+QdIc/Uugr8ifHOhWxcWIzPCuN+9iAiAdORKGvi94a18Cuuap2J+XxTyCVo8PxtQeHbJ8+EHtwQ=='
      }
    ]
  },
  directories: {}
}

Platform: Mac OS Sonoma (Version 14.4.1 (23E224)) Node version: v18.17.0 yarn version: v1.22.22

dosubot[bot] commented 2 months ago

It appears there's an issue with the ChatCohere.bind() method not correctly passing the tools to the Cohere Client in LangChain.js. This problem might stem from a bug within the LangChain.js framework itself. To address this, you could try updating LangChain.js to the latest version, as sometimes these issues are resolved in newer releases.

Alternatively, consider directly passing the tools to the ChatCohere constructor to see if it circumvents the issue:

const model = new ChatCohere({
  temperature: 0,
  model: "command-r-plus",
  tools,
});

If the problem persists, I recommend filing a new issue in the LangChain.js repository with the details you've provided here. The maintainers could offer more specific guidance or identify if this is indeed a bug that needs fixing.

Sources

#### About Dosu This response is meant to be useful and save you time. It is **not meant to be a precise solution**, but rather a starting point for your own research. Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant. If you want to continue the conversation, start your reply with @dosu-bot.
bracesproul commented 2 months ago

Hey, we don't have support for tool calling in the JS Cohere package yet. If you would like to make this contribution (we would really appreciate it!!) I can assign you to a new issue.

Royal-lobster commented 2 months ago

Hey, we don't have support for tool calling in the JS Cohere package yet. If you would like to make this contribution (we would really appreciate it!!) I can assign you to a new issue.

I see, I can work on this