0Pricing
AI Agents · Pelajaran

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

  1. Penyerapan: muat dokumen -> pecah menjadi bagian -> buat embedding -> simpan di basis data vektor
  2. Kueri: buat embedding pertanyaan -> ambil bagian teratas -> masukkan ke instruksi -> LLM
  3. 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 answer

Jebakan 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

  1. Bot Tanya Jawab untuk Dokumen Anda
  2. Agen Penjelas Kode
  3. Agen Riset Penjelajahan Web
  4. Asisten SQL untuk DB Anda
← Kembali ke AI Agents