langchain-ai / langchainjs

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

Creating a conversation agent with tools and history for Ollama #3942

Closed dmtrrk closed 10 months ago

dmtrrk commented 10 months ago

I'm trying to create a simple test that can:

Based on examples, the code should look like this:

const llm = new ChatOllama(...);
const tools = [...];
const executor = await initializeAgentExecutorWithOptions(tools, llm, ...);

the compiler does not like llm parameter because

The argument of type 'ChatOllama' is not assignable to the parameter of type 'BaseLanguageModelInterface<any, BaseLanguageModelCallOptions>'

and this is the same for OpenAI llm as well. I don't see this BaseLanguageModelCallOptions interface being used anywhere in the code. Is this the right way to use it?

dosubot[bot] commented 10 months ago

🤖

Hello @dmtrrk! I'm Dosu, an AI bot here to lend a hand while we wait for a real human to dive in. I'm suited up to help resolve bugs, answer your queries, and even guide you on how to contribute to projects. Let's get started!

Based on the error message you're seeing, it seems like there's a type mismatch between the ChatOllama instance and the expected BaseLanguageModelInterface<any, BaseLanguageModelCallOptions> type.

The BaseLanguageModelInterface is a generic interface that defines the structure of a language model in the LangChainJS framework. It includes methods for generating prompts, predicting text and messages, getting the number of tokens in a message, getting identifying parameters of the Language Model (LLM), and serializing the LLM. It also includes a property for CallOptions and a getter for callKeys.

The ChatOllama class should implement this interface, meaning it should have all the methods and properties defined in the BaseLanguageModelInterface. If it doesn't, you'll see the type error you're currently encountering.

Here's a general way to ensure that your ChatOllama instance matches the BaseLanguageModelInterface:

import { BaseLanguageModelInterface, BaseLanguageModelCallOptions } from "@langchain/core";

// Ensure that 'ChatOllama' instance matches 'BaseLanguageModelInterface<any, BaseLanguageModelCallOptions>'
const model: BaseLanguageModelInterface<any, BaseLanguageModelCallOptions> = new ChatOllama({
  baseUrl: "http://localhost:11434", // Default value
  model: "llama2", // Default value
  format: "json",
});

// Pass 'model' to 'initializeAgentExecutorWithOptions' function
initializeAgentExecutorWithOptions(model, options);

Please replace 'initializeAgentExecutorWithOptions' and 'options' with the actual function and parameters you are using.

If the issue persists, it would be helpful to see the actual code of 'initializeAgentExecutorWithOptions' function and 'BaseLanguageModelInterface'. This will allow me to provide a more concrete solution.

For more information, you can refer to the LangChainJS codebase and specifically the BaseLanguageModelInterface definition and the ChatOllama example.

I hope this helps! If you have any other questions or need further clarification, feel free to ask.

Sources


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.

dmtrrk commented 10 months ago

it looks like there is a disconnection between BaseLanguageModelInterface and BaseChatModel.

jacoblee93 commented 10 months ago

What version of LangChain and LangChain core are you using?

This may have been related to #3918, which locking core to 0.1.10 should fix.

Also, keep in mind that agents generally require pretty powerful models, and may be beyond what you can run on local hardware (though you should definitely try!)

We also have a new method for creating agents in the later versions of LangChain:

https://js.langchain.com/docs/modules/agents/quick_start

jacoblee93 commented 10 months ago

I believe the above fixes it, please comment and reopen if it does not!