Bot Tanya Jawab untuk Dokumen Anda
Kirim bot RAG yang berfungsi: masukkan PDF, buat embedding, cari, lalu hasilkan jawaban. Inilah 'hello world' bagi agen produksi.
Bot Tanya Jawab untuk Dokumen Anda adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Tujuan Proyek
Buat bot percakapan yang menjawab pertanyaan dari dokumen Anda sendiri (PDF, Markdown, dan sebagainya). Ini adalah contoh "halo dunia" untuk agen produksi dan langsung berguna bagi tim mana pun.
Arsitektur
- Penyerapan: muat dokumen -> pecah menjadi bagian -> buat embedding -> simpan di basis data vektor
- Kueri: buat embedding pertanyaan -> ambil bagian teratas -> masukkan ke instruksi -> LLM
- Kutipan: format bagian dengan ID; minta LLM menyertakan kutipan
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?'))Hubungkan ke Antarmuka Pengguna
Bungkus dengan FastAPI + halaman HTML sederhana (atau Streamlit), dan Anda memiliki aplikasi yang berfungsi.
# pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.post('/ask')
def ask(payload: dict):
return {'answer': answer(payload['question'])}Tambahkan Riwayat Percakapan
Untuk tanya jawab dengan banyak giliran, simpan pesan dan teruskan ke dalam instruksi:
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 answerJebakan Umum
- Bagian terlalu besar atau terlalu kecil — coba 500–800 token
- Tidak ada kutipan sumber — pengguna tidak mempercayai jawaban tanpa kutipan
- K terlalu besar — membuang token dan mengurangi fokus
- Membuat embedding dari SELURUH pertanyaan termasuk riwayat percakapan — buat embedding hanya dari pertanyaan pengguna terbaru
Tambahkan Tautan Sumber
Simpan URL sumber dalam metadata dan tampilkan dalam jawaban:
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.Evaluasi
Kumpulkan 20 pertanyaan nyata dari pengguna. Tandai secara manual apakah bot menjawab dengan benar. Gunakan ini sebagai himpunan evaluasi awal Anda.
Rilis dan Lakukan Iterasi
Bot ini, dalam produksi, menangani 80% pertanyaan umum. Lakukan iterasi berdasarkan 20% pertanyaan yang dijawabnya dengan salah — biasanya Anda memerlukan pemecahan bagian atau pemeringkatan ulang yang lebih baik.
Kutipan Sumber
Mengapa menyertakan ID sumber dalam instruksi dan meminta LLM menyertakan kutipan?
Ringkasan
Bot RAG dalam sekitar 50 baris. Rilis, evaluasi, lalu lakukan iterasi pada pemecahan bagian dan pengambilan. Pola ini berulang di banyak aplikasi agen.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Bot Tanya Jawab untuk Dokumen Anda” gratis?
Ya — teks lengkap “Bot Tanya Jawab untuk Dokumen Anda” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Bot Tanya Jawab untuk Dokumen Anda”?
Kirim bot RAG yang berfungsi: masukkan PDF, buat embedding, cari, lalu hasilkan jawaban. Inilah 'hello world' bagi agen produksi. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Bot Tanya Jawab untuk Dokumen Anda” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Bot Tanya Jawab untuk Dokumen Anda
- Agen Penjelas Kode
- Agen Riset Penjelajahan Web
- Asisten SQL untuk DB Anda