typescript - Vrátiť zdrojové dokumenty pomocou agenta langchain javascript
Zdá sa, že nedokážem prísť na to, ako odovzdať source_documents agentovi, vidím, že dostávam zdrojové dokumenty vrátené z retrievalChain. Ale odtiaľ sa to už nikdy neodovzdáva, niekto tu už prišiel na spôsob, ako získať zdrojové dokumenty vo výsledku exekútora?
Už mám otvorený problém na github-e langchainjs, ale nepodarilo sa mi nájsť fungujúce riešenie: https://github.com/langchain-ai/langchainjs/issues/3404
Bolo mi navrhnuté vytvoriť vlastný nástroj, ale zdá sa, že nemôžem vytvoriť vlastný nástroj bez toho, aby som narazil na nezhodu typov.
const vectorStore = await Chroma.fromExistingCollection(
new OpenAIEmbeddings({
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION,
azureOpenAIApiDeploymentName:
process.env.AZURE_OPENAI_API_DEPLOYMENT_EMBEDDING_NAME,
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME
}),
{
collectionName: chatbotID,
url: 'url'
}
)
const retriever = vectorStore.asRetriever()
const model = new ChatOpenAI({
temperature: 0,
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION,
azureOpenAIApiDeploymentName:
process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME,
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME,
streaming: true
})
const retrievalChain = new RetrievalQAChain({
combineDocumentsChain: loadQAStuffChain(model),
retriever,
returnSourceDocuments: true
})
const chatHistory = new ChatMessageHistory(previousMessages)
const memory = new OpenAIAgentTokenBufferMemory({
llm: model,
memoryKey: 'chat_history',
outputKey: 'output',
inputKey: 'input',
chatHistory
})
const qaTool = new ChainTool({
name: `state-of-${company}-qa`,
description: `State of the ${company} QA - useful for when you need to ask questions about ${company}.`,
chain: retrievalChain,
returnDirect: true,
verbose: true
})
const tools = [qaTool, shippingTool]
const executor = await initializeAgentExecutorWithOptions(tools, model, {
agentType: 'openai-functions',
memory,
returnIntermediateSteps: true,
agentArgs: {
prefix:
'insert prompt here'
}
})
await executor.call(
{
input: input
},
{
callbacks: [
{
handleLLMNewToken(token: string) {
res.write(token)
}
}
]
}
)