Spaces:
Runtime error
Runtime error
| import { CallbackManager } from 'langchain/callbacks'; | |
| import { ConversationalRetrievalQAChain } from 'langchain/chains'; | |
| import { OpenAIChat } from 'langchain/llms'; | |
| import { PromptTemplate } from 'langchain/prompts'; | |
| import { BufferMemory } from "langchain/memory"; | |
| import { HNSWLib } from 'langchain/vectorstores/hnswlib'; | |
| export const defaultPrompts = { | |
| CONDENSE_PROMPT: `Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question. | |
| Chat History: | |
| {chat_history} | |
| Follow Up Input: {question} | |
| Standalone question:`, | |
| QA_PROMPT: `You are an AI assistant providing helpful advice. You are given the following extracted parts of a long document and a question. Provide a conversational answer based on the context provided. | |
| You should only provide hyperlinks that reference the context below. Do NOT make up hyperlinks. | |
| If you can't find the answer in the context below, just say "Hmm, I'm not sure." Don't try to make up an answer. | |
| If the question is not related to the context, politely respond that you are tuned to only answer questions that are related to the context. | |
| Question: {question} | |
| ========= | |
| {context} | |
| ========= | |
| Answer:`, | |
| }; | |
| const CONDENSE_PROMPT = PromptTemplate.fromTemplate( | |
| defaultPrompts.CONDENSE_PROMPT, | |
| ); | |
| const QA_PROMPT = PromptTemplate.fromTemplate(defaultPrompts.QA_PROMPT); | |
| export const makeChain = ( | |
| vectorstore: HNSWLib, | |
| onTokenStream?: (token: string) => void, | |
| ) => { | |
| const model = new OpenAIChat({ | |
| temperature: 0.8, | |
| modelName: "OpenAIModelID.GPT_3_5", | |
| streaming: false, | |
| callbackManager: onTokenStream | |
| ? CallbackManager.fromHandlers({ | |
| async handleLLMNewToken(token) { | |
| onTokenStream(token); | |
| }, | |
| }) | |
| : undefined, | |
| }) | |
| return ConversationalRetrievalQAChain.fromLLM( | |
| model, vectorstore.asRetriever(), | |
| { | |
| memory: new BufferMemory({ | |
| memoryKey: "chat_history", // Must be set to "chat_history" | |
| }), qaTemplate: defaultPrompts.QA_PROMPT, questionGeneratorTemplate: defaultPrompts.CONDENSE_PROMPT }) | |
| }; | |