0Pricing
AI Agents · Lektion

Ein Q&A-Bot für Ihre Dokumente

Stellen Sie einen funktionierenden RAG-Bot bereit: PDFs aufnehmen, Embeddings erzeugen, suchen, generieren. Das „Hello World“ produktiver Agents.

Ein Q&A-Bot für Ihre Dokumente ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

Projektziel

Erstellen Sie einen Chatbot, der Fragen zu Ihren eigenen Dokumenten (PDFs, Markdown usw.) beantwortet. Das ist das „Hello World“ der Produktions-Agents und für jedes Team sofort nützlich.

Architektur

  1. Ingestion: Dokumente laden → in Chunks aufteilen → einbetten → in einer Vektordatenbank speichern
  2. Abfrage: Frage einbetten → die besten K Chunks abrufen → in den Prompt einfügen → an das LLM übergeben
  3. Zitieren: Chunks mit IDs formatieren und das LLM zum Zitieren auffordern

Step 1: Load and Chunk

from langchain.text_splitter import RecursiveCharacterTextSplitter
from pypdf import PdfReader

text = ''
for page in PdfReader('handbook.pdf').pages:
    text += page.extract_text() + '\n'

splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_text(text)
print(f'{len(chunks)} chunks')

Step 2: Embed and Store

import chromadb
from openai import OpenAI

oai = OpenAI()
chroma = chromadb.PersistentClient(path='./db')
collection = chroma.get_or_create_collection('handbook')

resp = oai.embeddings.create(model='text-embedding-3-small', input=chunks)
vectors = [d.embedding for d in resp.data]
collection.add(ids=[f'c{i}' for i in range(len(chunks))], embeddings=vectors, documents=chunks)

Step 3: Query Function

def query(question, k=4):
    qvec = oai.embeddings.create(model='text-embedding-3-small', input=question).data[0].embedding
    res = collection.query(query_embeddings=[qvec], n_results=k)
    return res['documents'][0]

Step 4: Build the Prompt

def make_prompt(question, chunks):
    context = '\n\n'.join(f'[{i+1}] {c}' for i, c in enumerate(chunks))
    return f'''
Using only the context below, answer the question.
If the answer is not present, say so.
Cite the source like [1], [2], etc.

Context:
{context}

Question: {question}
Answer:
'''

print(make_prompt("What is the return policy?", ["Returns accepted within 30 days.", "Item must be unused."]))

Step 5: Generate

def answer(question):
    chunks = query(question)
    prompt = make_prompt(question, chunks)
    response = oai.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        temperature=0,
    )
    return response.choices[0].message.content

print(answer('What is our refund policy?'))

Mit einer Benutzeroberfläche verbinden

Verpacken Sie das Ganze in FastAPI und eine einfache HTML-Seite (oder Streamlit), und Sie haben eine funktionierende Anwendung.

# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()

@app.post('/ask')
def ask(payload: dict):
    return {'answer': answer(payload['question'])}

Chatverlauf hinzufügen

Für Fragen und Antworten über mehrere Gesprächsrunden hinweg behalten Sie die Nachrichten bei und übergeben Sie sie an den Prompt:

messages = [{'role': 'system', 'content': 'You are a doc Q&A assistant.'}]

def chat(user_input):
    messages.append({'role': 'user', 'content': user_input})
    chunks = query(user_input)
    context_msg = {'role': 'system', 'content': f'Context:\n{chr(10).join(chunks)}'}
    response = oai.chat.completions.create(
        model='gpt-4o-mini',
        messages=[messages[0], context_msg] + messages[1:]
    )
    answer = response.choices[0].message.content
    messages.append({'role': 'assistant', 'content': answer})
    return answer

Häufige Stolperfallen

  • Chunks sind zu groß oder zu klein – versuchen Sie es mit 500–800 Tokens
  • Keine Quellenangabe – Benutzer vertrauen Antworten ohne Quellen nicht
  • K ist zu groß – verbraucht Tokens und verwässert die Aufmerksamkeit
  • Die GESAMTE Frage einschließlich des Chatverlaufs einbetten – betten Sie nur die neueste Frage des Benutzers ein

Quellenlinks hinzufügen

Quellen-URLs in den Metadaten speichern und in der Antwort anzeigen:

metadata = [{'source': 'handbook.pdf', 'page': i} for i in range(len(chunks))]
# In the prompt, include 'source: <url>' so the LLM can produce clickable references.

Evaluieren

Sammeln Sie 20 echte Fragen von Benutzern. Markieren Sie manuell, ob der Bot korrekt antwortet. Verwenden Sie dies als Ihr erstes Eval-Set.

Veröffentlichen und iterieren

Dieser Bot beantwortet in der Produktion 80 % der häufigen Fragen. Iterieren Sie anhand der 20 %, die er falsch beantwortet – meistens benötigen Sie bessere Chunk-Aufteilung oder ein besseres Re-Ranking.

Quellenangabe

Warum sollten Quellen-IDs in den Prompt aufgenommen und das LLM zum Zitieren aufgefordert werden?

Zusammenfassung

Ein RAG-Bot in etwa 50 Zeilen. Veröffentlichen, evaluieren und bei Chunk-Aufteilung und Retrieval iterieren. Dieses Muster wiederholt sich in unzähligen Agent-Anwendungen.

Häufig gestellte Fragen

Ist die Lektion „Ein Q&A-Bot für Ihre Dokumente“ kostenlos?

Ja — der vollständige Text von „Ein Q&A-Bot für Ihre Dokumente“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ein Q&A-Bot für Ihre Dokumente“?

Stellen Sie einen funktionierenden RAG-Bot bereit: PDFs aufnehmen, Embeddings erzeugen, suchen, generieren. Das „Hello World“ produktiver Agents. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AI Agents zu starten?

Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Ein Q&A-Bot für Ihre Dokumente“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?

Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ein Q&A-Bot für Ihre Dokumente
  2. Ein Agent zur Code-Erklärung
  3. Ein Recherche-Agent zum Web-Browsing
  4. Ein SQL-Assistent für Ihre Datenbank
← Zurück zu AI Agents