Rumah >pembangunan bahagian belakang >Tutorial Python >Panduan Lengkap untuk Langchain di Python
Langchain: Perpustakaan Python yang kuat untuk membina, bereksperimen dan menganalisis model bahasa dan ejen
mata teras:
Tetapan Alam Sekitar:
untuk mempelajari artikel ini, buat folder baru dan pasang Langchain dan Openai menggunakan PIP:
<code class="language-bash">pip3 install langchain openai</code>
ejen:
Di Langchain, ejen adalah entiti yang dapat memahami dan menghasilkan teks. Ejen-ejen ini boleh mengkonfigurasi tingkah laku dan sumber data tertentu dan dilatih untuk melaksanakan pelbagai tugas yang berkaitan dengan bahasa, menjadikannya alat pelbagai fungsi untuk pelbagai aplikasi.
Buat ejen Langchain: Agensi -agensi boleh dikonfigurasikan untuk menggunakan "alat" untuk mengumpul data yang diperlukan dan membangunkan respons yang baik. Sila lihat contoh di bawah. Ia menggunakan API SERP (API Carian Internet) untuk mencari maklumat yang berkaitan dengan soalan atau input dan untuk bertindak balas. Ia juga menggunakan alat LLM-Math untuk melaksanakan operasi matematik-contohnya, menukar unit atau mencari perubahan peratusan antara dua nilai:
seperti yang anda dapat lihat, setelah menyelesaikan semua import asas dan permulaan LLM (llm = openai (model = "gpt-3.5-turbo", suhu = 0)), kod menggunakan alat = load_tools (["Serpapi" , "llm-math"], llm = llm) Muatkan alat yang diperlukan untuk ejen berfungsi. Ia kemudian menggunakan fungsi initialize_agent untuk membuat ejen, menyediakannya dengan alat yang ditentukan, dan menyediakannya dengan penerangan sifar_shot_react_description, yang bermaksud ia tidak akan mengingati masalah sebelumnya.
<code class="language-python">from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")</code>
Contoh ujian agensi 1:
Mari uji ejen ini dengan input berikut:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
seperti yang anda lihat, ia menggunakan logik berikut:
Contoh ujian agensi 2:
Ejen Langchain tidak terhad untuk mencari Internet. Kami boleh menyambungkan hampir semua sumber data (termasuk kami sendiri) kepada ejen Langchain dan bertanya soalan mengenai data. Mari cuba buat ejen yang terlatih dalam dataset CSV.
Muat turun dataset filem dan tv Netflix ini dari Shivam Bansal di Kaggle dan gerakkannya ke direktori anda. Sekarang tambahkan kod ini ke fail python baru:
<code class="language-bash">pip3 install langchain openai</code>
Kod ini memanggil fungsi create_csv_agent dan menggunakan dataset netflix_titles.csv. Angka berikut menunjukkan ujian kami.
kita juga boleh membuat ejen dataframe Pandas seperti ini:
<code class="language-python">from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")</code>Jika kita menjalankannya, kita akan melihat hasilnya seperti yang ditunjukkan di bawah.
Ini hanya beberapa contoh. Kita boleh menggunakan hampir mana -mana API atau dataset dengan Langkhain.
Model:
Terdapat tiga jenis model dalam Langchain: Model Bahasa Besar (LLM), model sembang dan model penyembuhan teks. Mari kita meneroka setiap jenis model dengan beberapa contoh.
model bahasa yang besar:
Langchain menyediakan cara untuk menggunakan model bahasa yang besar dalam Python untuk menghasilkan output teks berdasarkan input teks. Ia tidak begitu rumit seperti model sembang dan paling sesuai untuk tugas bahasa input-output mudah. Berikut adalah contoh menggunakan OpenAI:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>Seperti yang ditunjukkan di atas, ia menggunakan model GPT-3.5-Turbo untuk menghasilkan output untuk input yang disediakan ("Datang dengan nama rap untuk Matt Nikonorov"). Dalam contoh ini, saya menetapkan suhu kepada 0.9 untuk menjadikan LLM lebih kreatif. Ia datang dengan "MC Megamatt." Saya memberikannya tanda 9/10.
Model sembang:
Sangat menyenangkan untuk mendapatkan model LLM untuk menghasilkan nama rap, tetapi jika kita mahu jawapan dan perbualan yang lebih kompleks, kita perlu menggunakan model sembang untuk meningkatkan kemahiran kita. Secara teknikal, bagaimana model sembang berbeza dari model bahasa yang besar? Dalam kata -kata dokumen Langchain:Model sembang adalah varian model bahasa yang besar. Walaupun model sembang menggunakan model bahasa yang besar di latar belakang, mereka menggunakan antara muka yang sedikit berbeza. Mereka tidak menggunakan "input teks, output teks" API, tetapi gunakan "mesej sembang" sebagai antara muka untuk input dan output.
ini adalah skrip model sembang python yang mudah:
<code class="language-bash">pip3 install langchain openai</code>
Seperti yang ditunjukkan di atas, kod pertama menghantar sistemmessage dan memberitahu chatbot untuk bersahabat dan tidak formal, dan kemudian ia menghantar manusia dan memberitahu chatbot untuk meyakinkan kami bahawa Djokovich lebih baik daripada Federer.
Jika anda menjalankan model chatbot ini, anda akan melihat hasil yang ditunjukkan di bawah.
Embeddings:
Embing menyediakan cara untuk menukar perkataan dan nombor dalam blok teks ke dalam vektor yang kemudiannya boleh dikaitkan dengan perkataan atau nombor lain. Ini mungkin terdengar abstrak, jadi mari kita lihat contoh:Ini ini akan mengembalikan senarai nombor titik terapung: [[0.00227628853168, Inilah yang kelihatan seperti penyembuhan.
<code class="language-python">from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")</code>
Kes penggunaan model tertanam:
Jika kita mahu melatih chatbot atau LLM untuk menjawab soalan yang berkaitan dengan data atau sampel teks tertentu, kita perlu menggunakan embedding. Mari buat fail CSV mudah (embs.csv) dengan lajur "teks" yang mengandungi tiga keping maklumat:
Sekarang, ini adalah skrip yang akan menggunakan embeds untuk mendapatkan soalan "Siapa yang paling tinggi manusia?"
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
Jika kita menjalankan kod ini, kita akan melihatnya output "Robert Wadlow adalah manusia tertinggi yang pernah". Kod ini mendapati jawapan yang betul dengan mendapatkan penyembuhan setiap maklumat dan mencari penyembuhan yang paling relevan dengan soalan "Siapa yang paling tinggi manusia?". Kuasa tertanam!
<code class="language-python">from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.agents import create_csv_agent import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" agent = create_csv_agent( OpenAI(temperature=0), "netflix_titles.csv", verbose=True, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, ) agent.run("In how many movies was Christian Bale casted")</code>
ketulan:
Model Langchain tidak dapat memproses teks besar pada masa yang sama dan menggunakannya untuk menghasilkan respons. Di sinilah blok dan segmentasi teks masuk. Mari kita lihat dua cara mudah untuk memecah data teks ke dalam blok sebelum memberi makan kepada Langchain.
blok segmen dengan watak:
Blok segmentasi rekursif:
Jika kita mahu secara tegas memisahkan teks oleh watak -watak panjang tertentu, kita boleh menggunakan RecursiveCharactertextSplitter:
<code class="language-python">from langchain.agents import create_pandas_dataframe_agent from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.llms import OpenAI import pandas as pd import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" df = pd.read_csv("netflix_titles.csv") agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True) agent.run("In what year were the most comedy movies released?")</code>
saiz blok dan tumpang tindih:
Apabila melihat contoh di atas, anda mungkin ingin mengetahui dengan tepat apa saiz blok dan parameter bertindih, dan bagaimana ia mempengaruhi prestasi. Ini dapat dijelaskan dalam dua cara:
<code class="language-python">from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" llm = OpenAI(model="gpt-3.5-turbo", temperature=0.9) print(llm("Come up with a rap name for Matt Nikonorov"))</code>
rantai:
Bab pada dasarnya adalah pelbagai fungsi LLM yang dikaitkan bersama untuk melaksanakan tugas yang lebih kompleks yang tidak dapat dicapai melalui input LLM yang mudah; Mari kita lihat contoh yang sejuk:
<code class="language-bash">pip3 install langchain openai</code>
Kod ini memasuki dua pembolehubah ke dalam arahannya dan mengembangkan jawapan kreatif (suhu = 0.9). Dalam contoh ini, kami memintanya untuk menghasilkan tajuk yang baik untuk filem seram mengenai matematik. Output selepas menjalankan kod ini adalah "kutukan mengira", tetapi ini tidak menunjukkan fungsi penuh rantai.
mari kita lihat contoh yang lebih praktikal:
<code class="language-python">from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")</code>
Kod ini mungkin kelihatan mengelirukan, jadi mari kita jelaskan langkah demi langkah.
Kod ini membaca biografi pendek NAS (Artis Hip Hop) dan mengekstrak nilai -nilai berikut dari teks dan formatnya sebagai objek JSON:
dengan segera, kami juga menyatakan "pastikan untuk menjawab dalam format yang betul" supaya kami sentiasa mendapat output dalam format JSON. Berikut adalah output kod ini:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
Dengan menyediakan corak JSON ke fungsi create_structed_output_chain, kami membuat rantai meletakkan outputnya ke dalam format JSON.
Beyond Openai:
Walaupun saya telah menggunakan model OpenAI sebagai contoh fungsi Langchain yang berlainan, ia tidak terhad kepada model OpenAI. Kita boleh menggunakan Langchain dengan banyak perkhidmatan LLM dan AI yang lain. (Ini adalah senarai lengkap llms bersepadu Langchain.)
Sebagai contoh, kita boleh menggunakan kohere dengan Langchain. Ini adalah dokumentasi untuk Integrasi Langchain Cohere, tetapi untuk memberikan contoh praktikal, setelah memasang Cohere menggunakan PIP3 Install Cohere, kita boleh menulis kod Q & A yang mudah menggunakan Langchain dan Cohere seperti berikut:
<code class="language-python">from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.agents import create_csv_agent import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" agent = create_csv_agent( OpenAI(temperature=0), "netflix_titles.csv", verbose=True, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, ) agent.run("In how many movies was Christian Bale casted")</code>
Kod di atas menghasilkan output berikut:
<code class="language-python">from langchain.agents import create_pandas_dataframe_agent from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.llms import OpenAI import pandas as pd import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" df = pd.read_csv("netflix_titles.csv") agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True) agent.run("In what year were the most comedy movies released?")</code>
Kesimpulan:
Dalam panduan ini, anda telah melihat pelbagai aspek dan fungsi Langchain. Sebaik sahaja anda menguasai pengetahuan ini, anda boleh menggunakan keupayaan Langchain untuk melakukan kerja NLP, sama ada anda seorang penyelidik, pemaju atau peminat.
Anda boleh mencari repositori pada github yang mengandungi semua imej dan fail nas.txt dalam artikel ini.
Saya doakan pengekodan gembira dan bereksperimen dengan Langchain di Python!
Atas ialah kandungan terperinci Panduan Lengkap untuk Langchain di Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!