Bagaimana untuk Melaksanakan Self-Ask Dengan Rantaian Carian?

Bagaimana Untuk Melaksanakan Self Ask Dengan Rantaian Carian



LangChain ialah modul untuk membina model bahasa dan chatbot yang boleh memahami dan mengekstrak teks dalam bahasa semula jadi. Bahasa semula jadi mudah difahami oleh manusia tetapi mesin perlu mempelajarinya dengan berulang kali melalui data. Data/dokumen dalam bahasa semula jadi boleh digunakan untuk melatih model dan kemudian meminta gesaan daripada data untuk menyemak prestasi model.

Rangka Pantas

Siaran ini akan menunjukkan perkara berikut:







Cara Melaksanakan Tanya Sendiri Dengan Rantaian Carian



Kesimpulan



Bagaimana untuk Melaksanakan Self-Ask Dengan Rantaian Carian?

Tanya Diri ialah proses untuk menambah baik proses rantaian kerana ia memahami arahan dengan teliti. Rantaian memahami soalan dengan mengekstrak data tentang semua istilah penting daripada set data. Setelah model dilatih dan memahami pertanyaan, ia menjana respons kepada pertanyaan yang ditanya oleh pengguna.





Untuk mempelajari proses melaksanakan tanya sendiri dengan rantai carian dalam LangChain, hanya melalui panduan berikut:

Langkah 1: Memasang Rangka Kerja

Pertama sekali, mulakan proses dengan memasang proses LangChain menggunakan kod berikut dan dapatkan semua kebergantungan untuk proses tersebut:



pip pasang langchain

Selepas memasang LangChain, pasang ' google-search-results ” untuk mendapatkan hasil carian daripada Google menggunakan persekitaran OpenAI:

pip pasang openai google-search-results

Langkah 2: Persekitaran Membina

Setelah modul dan rangka kerja dipasang, sediakan persekitaran untuk OpenAI dan SerpAPi menggunakan API mereka menggunakan kod berikut. Import perpustakaan os dan getpass yang boleh digunakan untuk memasukkan kunci API daripada akaun masing-masing:

import awak
import getpass

awak . lebih kurang [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )
awak . lebih kurang [ 'SERPAPI_API_KEY' ] = getpass . getpass ( 'Kunci API Serpapi:' )

Langkah 3: Mengimport Perpustakaan

Selepas menyediakan persekitaran, hanya import perpustakaan yang diperlukan daripada kebergantungan LangChain seperti utiliti, ejen, llm dan lain-lain:

daripada langchain. llms import OpenAI

daripada langchain. utiliti import SerpAPIWrapper

daripada langchain. ejen . output_parser import SelfAskOutputParser

daripada langchain. ejen . format_scratchpad import format_log_to_str

daripada langchain import hab

daripada langchain. ejen import initialize_agent , alat

daripada langchain. ejen import Jenis Agen

Langkah 4: Membina Model Bahasa

Mendapatkan perpustakaan di atas diperlukan sepanjang proses kerana OpenAI() digunakan untuk mengkonfigurasi model bahasa. Gunakan kaedah SerpAPIWrapper() untuk mengkonfigurasi pembolehubah carian dan tetapkan alatan yang diperlukan untuk ejen melaksanakan semua tugas:

llm = OpenAI ( suhu = 0 )
cari = SerpAPIWrapper ( )
alatan = [
alat (
nama = 'Jawapan Pertengahan' ,
fungsi = cari. lari ,
penerangan = 'berguna apabila anda perlu bertanya dengan carian' ,
)
]

Langkah 5: Menggunakan Bahasa Ekspresi LangChain

Bermula dengan mengkonfigurasi ejen menggunakan LangChain Expression Language (LCEL) dengan memuatkan model dalam pembolehubah segera:

segera = hab. tarik ( 'hwchase17/self-ask-with-search' )

Tentukan pembolehubah lain yang boleh dilaksanakan untuk berhenti menjana teks dan mengawal panjang balasan:

llm_with_stop = llm. mengikat ( berhenti = [ ' \n Jawapan pertengahan:' ] )

Sekarang, konfigurasikan ejen menggunakan Lambda yang merupakan platform tanpa pelayan dipacu peristiwa untuk menjana jawapan bagi soalan. Juga, konfigurasikan langkah yang diperlukan untuk melatih dan menguji model untuk mendapatkan hasil yang dioptimumkan menggunakan komponen yang dikonfigurasikan sebelum ini:

ejen = {
'input' : lambda x: x [ 'input' ] ,
'agent_scratchpad' : lambda x: format_log_to_str (
x [ 'langkah_perantaraan' ] ,
awalan_pemerhatian = ' \n Jawapan pertengahan: ' ,
llm_prefix = '' ,
) ,
} | segera | llm_with_stop | SelfAskOutputParser ( )

Langkah 6: Mengkonfigurasi Pelaksana Ejen

Sebelum menguji kaedah, hanya import perpustakaan AgentExecutor dari LangChain untuk menjadikan ejen responsif:

daripada langchain. ejen import AgenPelaksana

Tentukan pembolehubah agent_executor dengan memanggil kaedah AgentExecutor() dan menggunakan komponen sebagai hujahnya:

ejen_pelaksana = AgenPelaksana ( ejen = ejen , alatan = alatan , bertele-tele = betul )

Langkah 7: Menjalankan Ejen

Sebaik sahaja pelaksana ejen dikonfigurasikan, cukup uji dengan memberikan soalan/prompt dalam pembolehubah input:

ejen_pelaksana. menyeru ( { 'input' : 'Siapakah juara Terbuka A.S. lelaki' } )

Melaksanakan kod di atas telah membalas dengan nama Juara Terbuka AS dalam output iaitu Dominic Thiem:

Langkah 8: Menggunakan Ejen Tanya Sendiri

Selepas mendapat maklum balas daripada ejen, gunakan SELF_ASK_WITH_SEARCH ejen dengan pertanyaan dalam kaedah run():

self_ask_with_search = initialize_agent (
alatan , llm , ejen = Jenis Agen. SELF_ASK_WITH_SEARCH , bertele-tele = betul
)
self_ask_with_search. lari (
'Apakah kampung halaman Dominic Thiem Juara Dunia Terbuka AS'
)

Tangkapan skrin berikut memaparkan bahawa ejen tanya sendiri mengekstrak maklumat tentang setiap istilah penting daripada set data. Sebaik sahaja ia mengumpulkan semua maklumat tentang pertanyaan dan memahami soalan, ia hanya menjana jawapan. Soalan yang ditanya sendiri oleh ejen adalah:

  • Siapa Dominic Thiem?
  • Apakah kampung halaman Dominic Thiem?

Selepas mendapat jawapan kepada soalan-soalan ini, ejen telah menghasilkan jawapan kepada soalan asal iaitu “ Wiener Neustadt, Austria ”:

Itu sahaja tentang proses melaksanakan tanya sendiri dengan rantai carian menggunakan rangka kerja LangChain.

Kesimpulan

Untuk melaksanakan tanya sendiri dengan carian dalam LangChain, cuma pasang modul yang diperlukan seperti google-search-results untuk mendapatkan hasil daripada ejen. Selepas itu, sediakan persekitaran menggunakan kunci API daripada akaun OpenAI dan SerpAPi untuk memulakan proses. Konfigurasikan ejen dan bina model dengan model tanya sendiri untuk mengujinya menggunakan kaedah AgentExecutor().