Skip to content

Instantly share code, notes, and snippets.

@pazteddy
Created May 6, 2026 20:05
Show Gist options
  • Select an option

  • Save pazteddy/1e85a17023bee4b94edc5f5c1981403f to your computer and use it in GitHub Desktop.

Select an option

Save pazteddy/1e85a17023bee4b94edc5f5c1981403f to your computer and use it in GitHub Desktop.
Procesar cada fragmento de forma personalizada (streamClaudeWithCallback), RAG_SYSTEM_PROMPT y augmentedPrompt
const RAG_SYSTEM_PROMPT = `Eres DevAssistant, un asistente de documentación técnica.
Tu trabajo es responder preguntas basándote ÚNICAMENTE en la documentación que se te proporciona como contexto.
Reglas importantes:
1. Si la información está en el contexto: responde citando la fuente (nombre del archivo y sección)
2. Si la información NO está en el contexto: di claramente "No tengo esa información en la documentación disponible"
3. Nunca inventes datos técnicos, versiones, endpoints, o configuraciones
4. Usa markdown para formatear tu respuesta (código, listas, encabezados)
5. Sé conciso y directo — los developers prefieren respuestas específicas`;
function formatContext(chunks: RetrievedChunk[]): string {
return chunks
.map(
(chunk) =>
`[FUENTE: ${chunk.metadata.source} | Sección: ${chunk.metadata.heading}]\n${chunk.content}`
)
.join("\n\n---\n\n");
}
const augmentedPrompt = `Contexto recuperado de la documentación:
---
${}
---
Basándote ÚNICAMENTE en el contexto anterior, responde la siguiente pregunta.
Si la información no está en el contexto, indica claramente que no tienes esa información.
Cita la fuente (nombre del archivo y sección) cuando sea posible.
Pregunta: ${}`;
export async function streamClaudeWithCallback(
prompt: string,
onChunk: (textChunk: string) => void,
systemPrompt?: string,
): Promise<string> {
let fullResponse = "";
const responseStream = client.messages.stream({
model: config.anthropicModel,
max_tokens: 1024,
...(systemPrompt && { system: systemPrompt }),
messages: [{ role: "user", content: prompt }],
});
responseStream.on("text", (textChunk) => {
onChunk(textChunk);
fullResponse += textChunk;
});
await responseStream.finalMessage();
return fullResponse;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment