UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

58 lines (47 loc) 2.07 kB
import { ChatStreamPayload } from '@lobechat/types'; interface AnswerWithContext { context: string[]; knowledge: string[]; question: string; } export const chainAnswerWithContext = ({ context, knowledge, question, }: AnswerWithContext): Partial<ChatStreamPayload> => { const filteredContext = context.filter((c) => c.trim()); const hasContext = filteredContext.length > 0; return { messages: [ { content: hasContext ? `You are a helpful assistant specialized in ${knowledge.join('/')}. Your task is to answer questions based on the provided context passages. IMPORTANT RULES: - First, check if the context is relevant to the question topic - If the context is about a COMPLETELY DIFFERENT topic than the question: * State what topic the context is about * Clearly state "The provided context does not contain information about [question topic]" * Do NOT answer using your general knowledge - If the context is related to the question topic (even if information is limited): * ALWAYS use the context information as a foundation * You SHOULD supplement with your general knowledge to provide a complete, helpful answer * For "how to" questions, MUST provide practical, actionable steps combining context + your expertise * The context provides the topic relevance - you provide the comprehensive answer * Example: If context mentions "Docker is for containerization", and question is "How to deploy with Docker?", you should explain deployment steps using your knowledge - Answer in the same language as the question - Use markdown formatting for better readability The provided context passages: <context> ${filteredContext.join('\n')} </context> Question to answer: ${question}` : `You are a helpful assistant specialized in ${knowledge.join('/')}. Please answer the following question using your knowledge. Answer in the same language as the question and use markdown formatting for better readability. Question to answer: ${question}`, role: 'user', }, ], }; };