Почему мой агент не сохраняет прошлые разговоры?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему мой агент не сохраняет прошлые разговоры?

Сообщение Anonymous »

Я работаю над проектом, в котором мне нужно использовать Langchain с моделью Google Gemini (ChatGoogleGenerativeAI), но у меня возникают проблемы с сохранением памяти при нескольких вызовах.
Я хочу сохранить контекст между сообщениями пользователя, а это означает, что агент должен запоминать предыдущие разговоры, когда я вызываю его с новыми подсказками (т. е. имея историю чата для каждого потока).
Вот мой текущий код настройка:

Код: Выделить всё

import type { BaseChatModel } from "@langchain/core/language_models/chat_models";
import { ChatGoogleGenerativeAI } from "@langchain/google-genai";
import {
MemorySaver,
} from "@langchain/langgraph";
import {
createReactAgent,
} from "@langchain/langgraph/prebuilt";
import type { Tool } from "langchain/tools";

interface AgentInfo{
id: string,
name: string,
job: string,
sex: 'male' | 'female',
}

class Agent {
private model: BaseChatModel;
private tools: Tool[];
private agent: any;
private checkpointer: MemorySaver;
public info: AgentInfo;

constructor(model: BaseChatModel, tools: Tool[], info: AgentInfo) {
const checkpointer = new MemorySaver();
this.model = model;
this.tools = tools;
this.checkpointer = checkpointer
this.info = info;

const agent = createReactAgent({
llm: model,
tools: tools,
checkpointSaver: this.checkpointer,
});

this.agent = agent;
}

public getId(){
return this.info.id
}

public async invoke(prompt: string, thread_id?: string) {

const message = await this.agent.invoke(
{
messages: [{ role: "user", content: prompt }],
},
{
configurable: {
thread_id: thread_id,
},
}
);
return message.messages[message.messages.length - 1].content
}
}

const geminiModel = new ChatGoogleGenerativeAI({
model: "gemini-1.5-flash-8b",
});

const agent = new Agent(geminiModel, [], {id: '1', name:'josh', job: 'developer', sex: 'male'});

console.log(await agent.invoke('My name is test', 'test'));
console.log(await agent.invoke('What is my name', 'test'));

Проблема:
Я ожидаю, что агент запомнит контекст между вызовами (т. е. фразу «Меня зовут Джон» следует сохранить и использовать для ответа на вопрос «Как меня зовут? ").
Однако кажется, что память не сохраняется при вызовах, и агент не отвечает в ожидаемом контексте.
Что я пробовал:
Убедился, что MemorySaver работает сохранение и загрузка памяти правильно использовать checkpointer.load() и checkpointer.save().
Передал загруженную память вызову агента, надеясь, что он сохранит контекст.


Подробнее здесь: https://stackoverflow.com/questions/793 ... versations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»