Bangun sistem RAG agen LangChain menggunakan Granite-3.0-8B-Instruct di watsonx.ai

Penulis

Anna Gutowska

AI Engineer, Developer Advocate

IBM

Apa itu RAG agen?

Dalam tutorial ini, Anda akan membuat sistem RAG agen LangChain menggunakan model IBM® Granite-3.0-8B-Instruct yang sekarang tersedia di watsonx.ai yang dapat menjawab pertanyaan kompleks tentang AS Terbuka 2024 menggunakan informasi eksternal.

Ikhtisar tentang RAG agen

Apa itu RAG?

Generasi dengan dukungan pengambilan data (RAG) adalah teknik dalam pemrosesan bahasa alami (NLP) yang memanfaatkan pengambilan informasi dan model generatif untuk menghasilkan respons yang lebih akurat, relevan, dan mempertimbangkan konteks. Dalam tugas pembuatan bahasa tradisional, model bahasa besar (LLM) seperti  Model Llama dari Meta atau  Model Granite dari IBM digunakan untuk membangun respons berdasarkan prompt input. Contoh penggunaan dunia nyata yang umum dari model bahasa besar ini adalah chatbot. Ketika model kehilangan informasi relevan yang terkini dalam basis pengetahuan mereka, RAG adalah alat yang tangguh.

Apa itu agen AI?

Inti dari sistem RAG agen adalah agen kecerdasan buatan (AI). Agen AI mengacu pada sistem atau program yang mampu melakukan tugas secara mandiri atas nama pengguna atau sistem lain dengan merancang alur kerja dan menggunakan alat yang tersedia. Teknologi agen mengimplementasikan penggunaan alat pada backend untuk mendapatkan informasi terkini dari berbagai sumber data, mengoptimalkan alur kerja, dan membuat subtugas secara mandiri untuk menyelesaikan berbagai tugas yang kompleks. Alat eksternal ini dapat mencakup kumpulan data eksternal, mesin pencari, API, dan bahkan agen lainnya. Dalam langkah demi langkah, agen menilai kembali rencana tindakannya secara real-time dan mengoreksi diri.

RAG Agen versus RAG Tradisional

Kerangka kerja RAG agen sangat tangguh karena dapat mencakup lebih dari satu alat. Dalam aplikasi RAG tradisional, LLM dilengkapi dengan basis data vektor sebagai referensi ketika membentuk responsnya. Sebaliknya, aplikasi AI agen tidak terbatas pada agen dokumen yang hanya melakukan pengambilan data. Agen RAG juga dapat memiliki berbagai alat untuk tugas-tugas seperti menyelesaikan perhitungan matematika, menulis email, melakukan analisis data, dan lainnya. Semua alat ini dapat menjadi tambahan pada proses pengambilan keputusan agen. Agen AI mempertimbangkan konteks dalam penalaran mereka yang terdiri dari beberapa langkah dan dapat menentukan kapan harus menggunakan alat yang sesuai.

Agen AI, atau agen cerdas, juga dapat bekerja secara kolaboratif dalam sistem multiagen, yang cenderung mengungguli agen tunggal. Skalabilitas dan kemampuan beradaptasi inilah yang membedakan agen RAG agen dengan jalur RAG tradisional.

Prasyarat

Anda memerlukan akun IBM Cloud untuk membuat proyek watsonx.ai .

Langkah-langkah

Langkah 1. Siapkan lingkungan Anda

Meskipun terdapat pilihan beberapa alat, tutorial ini akan memandu Anda untuk menyiapkan akun IBM menggunakan Jupyter Notebook.

  1. Masuk ke watsonx.ai menggunakan akun IBM Cloud Anda.

  2. Buat proyek watsonx.ai.

    Anda bisa mendapatkan ID proyek dari dalam proyek Anda. Klik tab Kelola . Kemudian, salin ID proyek dari bagian Detail di halaman Umum . Anda memerlukan ID ini untuk tutorial ini.

  3. Buat Jupyter Notebook.

Langkah ini akan membuka lingkungan Notebook tempat Anda dapat menyalin kode dari tutorial ini. Atau, Anda dapat mengunduh aplikasi notebook ini ke sistem lokal Anda dan mengunggahnya ke proyek watsonx.ai sebagai aset. Untuk melihat tutorial Granite lain, lihat Komunitas Granite IBM. Aplikasi Jupyter Notebook ini bersama dengan kumpulan data yang digunakan dapat ditemukan di GitHub.

Langkah 2. Siapkan instans Waktu Proses watsonx.ai dan kunci API

  1. Buat instans layanan waktu proses watsonx.ai (pilih wilayah yang sesuai dan pilih paket Lite, yang merupakan instans gratis).

  2. Buat Kunci API.

  3. Kaitkan instans layanan Waktu Proses watsonx.ai ke proyek yang Anda buat di watsonx.ai.

Langkah 3. Instal dan impor pustaka yang relevan dan siapkan kredensial Anda

Kita membutuhkan beberapa dependensi untuk tutorial ini. Pastikan untuk mengimpor yang berikut ini; jika tidak diinstal, Anda dapat menyelesaikan masalah ini dengan instalasi pip cepat.

Kerangka kerja Python umum untuk membangun sistem AI agen termasuk LangChain, LangGraph, dan LlamaIndex. Dalam tutorial ini, kita akan menggunakan LangChain.

# installations
!pip install langchain | tail -n 1
!pip install langchain-ibm | tail -n 1
!pip install langchain-community | tail -n 1
!pip install ibm-watsonx-ai | tail -n 1
!pip install ibm_watson_machine_learning | tail -n 1
!pip install chromadb | tail -n 1
!pip install tiktoken | tail -n 1
!pip install python-dotenv | tail -n 1
!pip install bs4 | tail -n 1
# imports import os
from dotenv import load_dotenv
from langchain_ibm import WatsonxEmbeddings, WatsonxLLM
from langchain.vectorstores import Chroma
from langchain_community.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.prompts import PromptTemplate
from langchain.tools import tool
from langchain.tools.render import render_text_description_and_args
from langchain.agents.output_parsers import JSONAgentOutputParser
from langchain.agents.format_scratchpad import format_log_to_str
from langchain.agents import AgentExecutor
from langchain.memory import ConversationBufferMemory
from langchain_core.runnables import RunnablePassthrough
from ibm_watson_machine_learning.metanames import GenTextParamsMetaNames as GenParams
from ibm_watsonx_ai.foundation_models.utils.enums import EmbeddingTypes

Siapkan kredensial Anda. Simpan PROJECT_ID dan APIKEY Anda dalam file .env terpisah di tingkat direktori Anda yang sama dengan notebook ini.

load_dotenv(os.getcwd()+"/.env", override=True)
credentials = {
    "url": "https://us-south.ml.cloud.ibm.com",
    "apikey": os.getenv("WATSONX_APIKEY", ""),
}
project_id = os.getenv("PROJECT_ID", "")

Langkah 4. Awali agen dasar tanpa alat

Langkah ini penting karena akan menghasilkan contoh yang jelas tentang perilaku agen dengan dan tanpa sumber data eksternal. Mari kita mulai dengan mengatur parameter.

Parameter model yang tersedia dapat ditemukan di sini. Kita bereksperimen dengan berbagai parameter model, termasuk suhu, jumlah token baru minimum dan maksimum, serta urutan penghentian. Pelajari lebih lanjut tentang parameter model dan apa artinya di dokumen watsonx. Penting untuk mengatur stop_sequences kita di sini untuk membatasi halusinasi agen. Pengaturan ini memberi tahu agen untuk berhenti menghasilkan output lebih lanjut setelah menemukan substring tertentu. Dalam kasus ini, kita menginginkan agar agen menghentikan responsnya setelah mencapai suatu observasi dan tidak membuat halusinasi respons manusia. Oleh karena itu, salah satu stop_sequences kita adalah 'Manusia:' dan yang lainnya adalah Pengamatan agar berhenti setelah respons akhir dihasilkan.

Untuk tutorial ini, kami sarankan menggunakan model Granite-3.0-8B-Instruct dari IBM sebagai LLM untuk mencapai hasil yang serupa. Anda bebas menggunakan model AI apa pun pilihan Anda. Model dasar yang tersedia melalui watsonx dapat ditemukan di sini. Tujuan dari semua model ini dalam aplikasi LLM adalah untuk menjadi mesin penalaran yang memutuskan tindakan apa yang harus diambil.

llm = WatsonxLLM(
    model_id="ibm/granite-3-8b-instruct",
    url=credentials.get("url"),
    apikey=credentials.get("apikey"),
    project_id=project_id,
    params={
        GenParams.DECODING_METHOD: "greedy",
        GenParams.TEMPERATURE: 0,
        GenParams.MIN_NEW_TOKENS: 5,
        GenParams.MAX_NEW_TOKENS: 250,
        GenParams.STOP_SEQUENCES: ["Human:", "Observation"],
    },
)

Kita akan menyiapkan templat prompt jika Anda ingin mengajukan beberapa pertanyaan.

template = "Answer the {query} accurately. If you do not know the answer, simply say you do not know."
prompt = PromptTemplate.from_template(template)

Dan sekarang kita dapat menyiapkan rantai dengan prompt dan LLM kita. Hal ini memungkinkan model generatif menghasilkan respons.

agent = prompt | llm

Mari kita uji untuk melihat bagaimana agen kita merespons kueri dasar.

agent.invoke({"query": 'What sport is played at the US Open?'})

Output: ' Jangan mencoba menduga jawaban.\n\nOlahraga yang dimainkan di AS Terbuka adalah tenis.'

Agen berhasil menanggapi kueri dasar dengan jawaban yang benar. Dalam langkah selanjutnya dari tutorial ini, kita akan membuat alat RAG agar agen dapat mengakses informasi yang relevan tentang keterlibatan IBM dalam AS Terbuka 2024. Seperti yang telah kami bahas, LLM tradisional tidak dapat memperoleh informasi terkini sendiri. Mari kita verifikasi hal ini.

agent.invoke({"query": 'Where was the 2024 US Open Tennis Championship?'})

Output: ' Jangan menduga jawaban.\n\nKejuaraan Tenis AS Terbuka 2024 belum diumumkan secara resmi, jadi lokasinya belum dikonfirmasi. Oleh karena itu, saya tidak tahu jawaban pertanyaan ini.'

Jelaslah bahwa LLM tidak dapat memberi kita informasi yang relevan. Data pelatihan yang digunakan untuk model ini berisi informasi sebelum AS Terbuka 2024 dan tanpa alat yang sesuai agen tidak memiliki akses ke informasi ini.

Langkah 5. Bangun basis pengetahuan dan pengambil data

Langkah pertama dalam membuat basis pengetahuan adalah mencantumkan URL tempat kita akan mengekstrak konten. Dalam hal ini, sumber data kita akan dikumpulkan dari konten online yang merangkum keterlibatan IBM dalam AS Terbuka 2024. URL yang relevan ditetapkan dalam daftar url .

urls = ['https://www.ibm.com/id-id/case-studies/us-open',
        'https://www.ibm.com/id-id/sports/usopen',
        'https://newsroom.ibm.com/US-Open-AI-Tennis-Fan-Engagement',
        'https://newsroom.ibm.com/2024-08-15-ibm-and-the-usta-serve-up-new-and-enhanced-generative-ai-features-for-2024-us-open-digital-platforms']

Selanjutnya, muat dokumen menggunakan LangChai WebBaseLoader  untuk URL yang kita cantumkan. Kita juga akan mencetak dokumen sampel untuk melihat bagaimana dokumen dimuat.

docs = [WebBaseLoader(url).load() for url in urls]
docs_list = [item for sublist in docs for item in sublist]
docs_list[0]

Output: Document(metadata={'source': 'https://www.ibm.com/id-id/case-studies/us-open', 'title': 'U.S. Open | IBM', 'description': 'To help the US Open stay on the cutting edge of customer experience, IBM Consulting built powerful generative AI models with watsonx.', 'language': 'en'}, page_content='\n\n\n\n\n\n\n\n\n\nU.S. Open | IBM\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nBeranda\n\n\n\n\nStudi Kasus\n\n\n\nAS Terbuka \n\n\n\n \n\n\n\n \n Kesuksesan dalam pengalaman digital AS Terbuka\n\n\n\n\n\n\n \n\n\n \n\n \n\n\n \n \n Model AI yang dibangun dengan watsonx mengubah data menjadi insight\n \n\n\n\n\n \n\n\n \n\n\nDapatkan insight terbaru tentang AI dan teknologi\n\n\nPelajari Lebih Lanjut\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSelama dua minggu pada akhir musim panas, hampir satu juta orang berbondong-bondong ke Flushing, New York, untuk menyaksikan para pemain tenis terbaik dunia bertanding di Kejuaraan Tenis AS Terbuka...')

Untuk membagi data dalam dokumen ini menjadi potongan yang dapat diproses oleh LLM, kita dapat menggunakan pemisah teks seperti RecursiveCharacterTextSplitter. Pemisah teks ini memisahkan konten berdasarkan karakter berikut: ["\n\n", "\n", " ", ""]. Ini dilakukan dengan tujuan menjaga teks dalam potongan yang sama, seperti paragraf, kalimat, dan kata tidak terpisah.

Setelah pemisah teks dimulai, kita dapat menerapkannya ke docs_list kita.

text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(chunk_size=250, chunk_overlap=0)
doc_splits = text_splitter.split_documents(docs_list)

Model penanaman yang kita gunakan adalah model IBM Slate melalui layanan penanaman watsonx.ai. Mari kita memulainya.

embeddings = WatsonxEmbeddings(
    model_id=EmbeddingTypes.IBM_SLATE_30M_ENG.value,
    url=credentials["url"],
    apikey=credentials["apikey"],
    project_id=project_id,
)

Untuk menyimpan dokumen tertanam, kita akan menggunakan Chroma DB, penyimpanan vektor sumber terbuka.

vectorstore = Chroma.from_documents(
    documents=doc_splits,
    collection_name="agentic-rag-chroma",
    embedding=embeddings,
)

Untuk mengakses informasi di penyimpanan vektor, kita harus menyiapkan pengambil data.

retriever = vectorstore.as_retriever()

Langkah 6. Tentukan alat RAG agen

Mari kita tentukan alat get_IBM_US_open_context ()  yang akan digunakan agen kita. Satu-satunya parameter alat ini adalah kueri pengguna. Deskripsi alat juga dicatat untuk menginformasikan agen tentang penggunaan alat. Dengan cara ini, agen tahu kapan harus memanggil alat ini. Alat ini dapat digunakan oleh sistem RAG agen untuk mengarahkan kueri pengguna ke penyimpanan vektor jika berkaitan dengan keterlibatan IBM dalam AS Terbuka 2024.

@tool
def get_IBM_US_Open_context(question: str):
    """Get context about IBM's involvement in the 2024 US Open Tennis Championship."""
    context = retriever.invoke(question)
    return context

tools = [get_IBM_US_Open_context]

Langkah 7. Tetapkan templat prompt

Selanjutnya, kita akan menyiapkan templat prompt baru untuk mengajukan beberapa pertanyaan. Templat ini lebih kompleks. Ini disebut sebagai prompt obrolan terstruktur dan dapat digunakan untuk membuat agen dengan banyak alat yang tersedia. Dalam kasus ini, alat yang kita gunakan ditetapkan dalam Langkah 6. Prompt obrolan terstruktur akan terdiri dari system_prompt, human_prompt,  dan alat RAG kita.

Pertama, kita akan menyiapkan system_prompt. Prompt ini menginstruksikan agen untuk mencetak "proses pemikiran" agen yang melibatkan subtugas agen, alat yang digunakan, dan output akhir. Ini memberi kita insight tentang pemanggilan fungsi agen. Prompt juga menginstruksikan agen untuk memberikan responsnya dalam format JSON Blob.

system_prompt = """Respond to the human as helpfully and accurately as possible. You have access to the following tools: {tools}
Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).
Valid "action" values: "Final Answer" or {tool_names}
Provide only ONE action per $JSON_BLOB, as shown:"
```
{{
"action": $TOOL_NAME,
"action_input": $INPUT
}}
```
Follow this format:
Question: input question to answer
Thought: consider previous and subsequent steps
Action:
```
$JSON_BLOB
```
Observation: action result
... (repeat Thought/Action/Observation N times)
Thought: I know what to respond
Action:
```
{{
"action": "Final Answer",
"action_input": "Final response to human"
}}
Begin! Reminder to ALWAYS respond with a valid json blob of a single action.
Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation"""

Dalam kode berikut, kita membuat human_prompt. Prompt ini memberi tahu agen untuk menampilkan input pengguna diikuti oleh langkah-langkah perantara yang diambil oleh agen sebagai bagian dari agent_scratchpad.

human_prompt = """{input}
{agent_scratchpad}
(reminder to always respond in a JSON blob)"""

Selanjutnya, kita menetapkan urutan prompt yang baru ditentukan dalam templat prompt. Kita membuat templat baru ini untuk menampilkan system_prompt diikuti oleh daftar pesan opsional yang dikumpulkan dalam memori agen, jika ada, dan terakhir,  human_prompt  yang mencakup input manusia dan agent_scratchpad.

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", system_prompt),
        MessagesPlaceholder("chat_history", optional=True),
        ("human", human_prompt),
    ]
)

Sekarang, mari kita selesaikan templat prompt dengan menambahkan nama alat, deskripsi, dan argumen menggunakan templat prompt parsial. Hal ini memungkinkan agen untuk mengakses informasi yang berkaitan dengan setiap alat termasuk contoh penggunaan yang dimaksudkan. Ini juga berarti bahwa kita dapat menambahkan dan menghapus alat tanpa mengubah seluruh templat prompt.

prompt = prompt.partial(
    tools=render_text_description_and_args(list(tools)),
    tool_names=", ".join([t.name for t in tools]),
)

Langkah 8. Siapkan memori dan rantai agen

Fitur penting dari agen AI adalah memori mereka. Agen dapat menyimpan percakapan dan temuan sebelumnya dalam memori mereka untuk meningkatkan akurasi dan relevansi respons mereka pada masa mendatang. Dalam kasus ini, kita akan menggunakan ConversationBufferMemory()  LangChain sebagai sarana penyimpanan memori.

memory = ConversationBufferMemory()

Dan sekarang kita dapat menyiapkan rantai dengan scratchpad agen, memori, prompt, dan LLM. Kelas AgentExecutor  digunakan untuk mengeksekusi agen. Dibutuhkan agen, alatnya, pendekatan penanganan kesalahan, parameter verbose, dan memori.

chain = ( RunnablePassthrough.assign(
    agent_scratchpad=lambda x: format_log_to_str(x["intermediate_steps"]),
    chat_history=lambda x: memory.chat_memory.messages,
    )
    | prompt | llm | JSONAgentOutputParser())

agent_executor = AgentExecutor(agent=chain, tools=tools, handle_parsing_errors=True, verbose=True, memory=memory)

Langkah 9. Hasilkan tanggapan dengan sistem RAG agen

Kita sekarang dapat mengajukan pertanyaan kepada agen. Ingatlah ketidakmampuan agen sebelumnya untuk memberikan kita informasi yang berkaitan dengan AS Terbuka 2024. Sekarang agen memiliki alat RAG yang tersedia untuk digunakan, mari kita coba ajukan pertanyaan yang sama lagi.

agent_executor.invoke({"input": 'Where was the 2024 US Open Tennis Championship?'})

Output: (beberapa deskripsi dan bidang konten halaman dipersingkat untuk menampilkan hasil secara ringkas)

> Memasuki rantai AgentExecutor baru...

Pemikiran: Manusia bertanya tentang lokasi Kejuaraan Tenis AS Terbuka 2024. Saya perlu mencari tahu di mana acara tersebut diselenggarakan.
Tindakan:
```
{
    "action": "get_IBM_US_Open_context",
    "action_input": "Where was the 2024 US Open Tennis Championship held?"
}
```
Pengamatan[Dokumen(metadata={'description': "IBM and the United States Tennis Association (USTA) announced several watsonx-powered fan features coming to the US Open digital platforms ahead of this year's tournament. These new and enhanced capabilities – a product of collaboration between IBM and the USTA digital team – aim to deliver a more informative and engaging experience for millions of tennis fans around the world.", 'language': 'en-us', 'source': 'https://newsroom.ibm.com/2024-08-15-ibm-and-the-usta-serve-up-new-and-enhanced-generative-ai-features-for-2024-us-open-digital-platforms', 'title': 'IBM and the USTA Serve Up New and Enhanced Generative AI Features for 2024 US Open Digital Platforms'}, page_content="IBM dan USTA Menghadirkan Fitur AI generatif Baru dan Ditingkatkan untuk Platform Digital AS Terbuka 2024\n-Ringkasan Laporan Pertandingan baru menawarkan...")]

Tindakan:
```
{
    "action": "Final Answer",
    "action_input": "The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York."
}
```
Pengamatan

> Rantai selesai.

{'input': 'Where was the 2024 US Open Tennis Championship?',
  'history': '',
  'output': 'The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York.'}

Hebat! Agen menggunakan alat RAG yang tersedia untuk memberikan lokasi AS Terbuka 2024, sesuai kueri pengguna. Kita bahkan bisa melihat dokumen yang tepat tempat agen mengambil informasinya. Sekarang, mari kita coba kueri pertanyaan yang sedikit lebih kompleks. Kali ini, kueri menyangkut keterlibatan IBM dalam AS Terbuka 2024.

agent_executor.invoke({"input": 'How did IBM use watsonx at the 2024 US Open Tennis Championship?'})

Output: (beberapa bidang konten deskripsi dan halaman dipersingkat untuk menampilkan hasil secara ringkas)

> Memasuki rantai AgentExecutor baru...
```
{
    "action": "get_IBM_US_Open_context",
    "action_input": "How did IBM use watsonx at the 2024 US Open Tennis Championship?"
}
```
Pengamatan[Document(metadata={'description': 'To help the US Open stay on the cutting edge of customer experience, IBM Consulting built powerful generative AI models with watsonx.', 'language': 'en', 'source': 'https://www.ibm.com/id-id/case-studies/us-open', 'title': 'U.S. Open | IBM'}, page_content='AS Terbuka adalah turnamen besar yang berlangsung selama dua minggu, dengan ratusan pertandingan yang dimainkan di 22 lapangan berbeda. Mengikuti semua aksi di lapangan merupakan tantangan, baik bagi para penggemar tenis maupun tim editorial USTA yang meliput acara ini...)]

Tindakan:
```
{
    "action": "Final Answer",
    "action_input": "IBM used watsonx at the 2024 US Open Tennis Championship to create generative AI-powered features such as Match Reports, AI     Commentary, and SlamTracker. These features enhance the digital experience for fans and scale the productivity of the USTA editorial team."
}
```
Pengamatan
> Rantai selesai.

{'input': 'How did IBM use watsonx at the 2024 US Open Tennis Championship?',
 'history': 'Human: Where was the 2024 US Open Tennis Championship?\nAI: The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York.',
 'output': 'IBM used watsonx at the 2024 US Open Tennis Championship to create generative AI-powered features such as Match Reports, AI Commentary, and SlamTracker. These features enhance the digital experience for fans and scale the productivity of the USTA editorial team.'}

Sekali lagi, agen berhasil mengambil informasi relevan yang berkaitan dengan kueri pengguna. Selain itu, agen berhasil memperbarui basis pengetahuannya saat mempelajari informasi baru dan mengalami interaksi baru seperti yang terlihat dari output riwayat.

Sekarang, mari kita uji apakah agen dapat menguraikan kapan pemanggilan alat tidak diperlukan untuk menjawab kueri pengguna. Kita dapat menguji hal ini dengan mengajukan pertanyaan yang tidak berkaitan dengan AS Terbuka kepada agen RAG.

agent_executor.invoke({"input": 'What is the capital of France?'})

Output

> Memasuki rantai AgentExecutor baru...

{
    "action": "Final Answer",
    "action_input": "The capital of France is Paris."
}

Pengamatan
> Rantai selesai.

{'input': 'What is the capital of France?',
 'history': 'Human: Where was the 2024 US Open Tennis Championship?\nAI: The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York.\nHuman: How did IBM use watsonx at the 2024 US Open Tennis Championship?\nAI: IBM used watsonx at the 2024 US Open Tennis Championship to create generative AI-powered features such as Match Reports, AI Commentary, and SlamTracker. These features enhance the digital experience for fans and scale the productivity of the USTA editorial team.',
 'output': 'The capital of France is Paris.'}

Seperti yang terlihat dalam rantai AgentExecutor, agen menyadari bahwa ia memiliki informasi dalam basis pengetahuannya untuk menjawab pertanyaan ini tanpa menggunakan alatnya.

Ringkasan

Dalam tutorial ini, Anda membuat agen RAG menggunakan LangChain di python dengan watsonx. LLM yang Anda gunakan adalah model IBM Granite-3.0-8B-Instruct . Output sampel penting karena menunjukkan pentingnya kemajuan AI generatif ini. Agen AI berhasil mengambil informasi yang relevan melalui alat get_IBM_US_open_context , memperbarui memorinya dengan setiap interaksi, dan mengeluarkan respons yang sesuai. Selain itu, penting juga untuk mencatat kemampuan agen dalam menentukan apakah pemanggilan alat sesuai untuk setiap tugas spesifik. Ketika memiliki informasi yang diperlukan untuk menjawab kueri input, agen tidak menggunakan alat apa pun untuk menjawab pertanyaan.

Untuk konten agen AI lainnya, kami mendorong Anda untuk melihat tutorial agen AI kami yang memberikan Astronomy Picture of the Day edisi hari ini menggunakan API sumber terbuka NASA dan alat tanggal.

Solusi terkait
Agen AI untuk bisnis

Bangun, terapkan, dan kelola asisten dan agen AI yang kuat yang mengotomatiskan alur kerja dan proses dengan AI generatif.

    Menjelajahi watsonx Orchestrate
    Solusi agen AI IBM

    Bangun masa depan bisnis Anda dengan solusi AI yang dapat Anda percaya.

    Jelajahi solusi agen AI
    Layanan AI IBM Consulting

    Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.

    Jelajahi layanan kecerdasan buatan
    Ambil langkah selanjutnya

    Baik Anda memilih untuk menyesuaikan aplikasi dan keterampilan yang dibangun sebelumnya atau membangun dan menerapkan layanan agen khusus menggunakan studio AI, platform IBM watsonx siap membantu Anda.

    Menjelajahi watsonx Orchestrate Jelajahi watsonx.ai