0Pricing
AI Agents · Lezione

Un bot di domande e risposte sui Suoi documenti

Realizzi un bot RAG funzionante: acquisisca i PDF, generi gli embedding, cerchi e generi la risposta. È l'hello world degli agenti per la produzione.

Un bot di domande e risposte sui Suoi documenti è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Obiettivo del progetto

Costruisca un chatbot che risponda alle domande usando i vostri documenti (PDF, Markdown e così via). Questo è l'"hello world" degli agenti in produzione ed è subito utile per qualsiasi team.

Architettura

  1. Ingestione: caricare i documenti -> suddividerli in chunk -> creare gli embedding -> archiviarli in un DB vettoriale
  2. Query: creare l'embedding della domanda -> recuperare i chunk principali -> inserirli nel prompt -> LLM
  3. Citazione: formattare i chunk con gli ID e chiedere all'LLM di citarli

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?'))

Collegare il tutto a un'interfaccia

Avvolga il tutto in FastAPI con una semplice pagina HTML (o Streamlit) e avrà un'app funzionante.

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

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

Aggiungere la cronologia della chat

Per le domande e risposte su più turni, conservi i messaggi e li passi al 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

Problemi comuni

  • Chunk troppo grandi o troppo piccoli — provi con 500-800 token
  • Nessuna citazione della fonte — gli utenti non si fidano delle risposte senza citazioni
  • K troppo grande — spreca token e diluisce l'attenzione
  • Creare l'embedding dell'intera domanda, inclusa la cronologia della chat — crei l'embedding solo dell'ultima domanda dell'utente

Aggiungere i link alle fonti

Salvi gli URL delle fonti nei metadati e li mostri nella risposta:

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.

Valutarlo

Raccolga 20 domande reali dagli utenti. Indichi manualmente se il bot risponde correttamente. Usi questo insieme come punto di partenza per la valutazione.

Rilasciare e iterare

In produzione, questo bot gestisce l'80% delle domande comuni. Iteri sulla base del 20% a cui risponde in modo errato: di solito servono chunking o re-ranking migliori.

Citazione delle fonti

Perché includere gli ID delle fonti nel prompt e chiedere all'LLM di citarli?

Riepilogo

Un bot RAG in circa 50 righe. Lo rilasci, lo valuti e migliori chunking e retrieval. Questo schema si ripete in innumerevoli app basate su agenti.

Domande Frequenti

La lezione «Un bot di domande e risposte sui Suoi documenti» è gratuita?

Sì — il testo completo di «Un bot di domande e risposte sui Suoi documenti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Un bot di domande e risposte sui Suoi documenti»?

Realizzi un bot RAG funzionante: acquisisca i PDF, generi gli embedding, cerchi e generi la risposta. È l'hello world degli agenti per la produzione. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Un bot di domande e risposte sui Suoi documenti»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Un bot di domande e risposte sui Suoi documenti
  2. Un agente che spiega il codice
  3. Un agente di ricerca che naviga sul Web
  4. Un assistente SQL per il Suo database
← Torna a AI Agents