Rumah >pembangunan bahagian belakang >Tutorial Python >Panduan Lengkap untuk Langchain di Python

Panduan Lengkap untuk Langchain di Python

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2025-02-10 08:29:10624semak imbas

Langchain: Perpustakaan Python yang kuat untuk membina, bereksperimen dan menganalisis model bahasa dan ejen

A Complete Guide to LangChain in Python

mata teras:

    Langchain adalah perpustakaan python yang memudahkan penciptaan, eksperimen dan analisis model bahasa dan ejen, menyediakan pelbagai fungsi untuk pemprosesan bahasa semulajadi.
  • Ia membolehkan penciptaan agen pelbagai fungsi yang dapat memahami dan menghasilkan teks dan dapat mengkonfigurasi tingkah laku tertentu dan sumber data untuk melaksanakan pelbagai tugas yang berkaitan dengan bahasa.
  • Langchain menyediakan tiga jenis model: model bahasa yang besar (LLM), model sembang dan model penyembuhan teks, masing -masing menyediakan fungsi unik untuk tugas pemprosesan bahasa.
  • Ia juga menyediakan ciri-ciri seperti segmen teks besar ke dalam blok yang mudah dikendalikan, menghubungkan pelbagai fungsi LLM melalui rantai untuk melaksanakan tugas-tugas yang kompleks, dan mengintegrasikan dengan pelbagai perkhidmatan LLM dan AI di luar OpenAI.
Langchain adalah perpustakaan Python yang kuat yang membolehkan pemaju dan penyelidik membuat, mencuba, dan menganalisis model dan ejen bahasa. Ia menyediakan peminat pemprosesan bahasa semulajadi (NLP) dengan set ciri yang kaya, dari membina model tersuai untuk memanipulasi data teks yang cekap. Dalam panduan komprehensif ini, kami akan menggali komponen asas Langchain dan menunjukkan bagaimana untuk memanfaatkan kekuasaannya di Python.

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: A Complete Guide to LangChain in Python

  • Cari "Pengeluaran Tenaga Turbin Angin Di Seluruh Dunia 2022" Menggunakan API Carian Internet SERP
  • hasil terbaik untuk analisis
  • Dapatkan nombor yang relevan
  • Gunakan alat LLM-Math untuk menukar 906 GW ke Joule kerana kami meminta tenaga, bukan kuasa

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.

A Complete Guide to LangChain in Python

Seperti yang ditunjukkan di atas, logiknya adalah untuk mencari semua kejadian "Christian Bale" dalam lajur pelakon.

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.

A Complete Guide to LangChain in Python A Complete Guide to LangChain in Python

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.

A Complete Guide to LangChain in Python

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:

3

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>
  • Saiz blok menentukan bilangan aksara dalam setiap blok. Semakin besar saiz blok, semakin banyak data ada di blok, semakin lama ia mengambil langchain untuk memprosesnya dan menghasilkan output, dan sebaliknya.
  • Blok bertindih adalah kandungan yang berkongsi maklumat antara blok supaya mereka berkongsi beberapa konteks. Semakin tinggi blok bertindih, semakin berlebihan blok kita, semakin rendah blok bertindih, konteks yang kurang dikongsi antara blok. Biasanya, tumpang tindih blok yang baik adalah 10% hingga 20% daripada saiz blok, walaupun tumpang tindih blok yang dikehendaki berbeza -beza mengikut jenis teks dan kes penggunaan yang berbeza.

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:

  • Nama Artis
  • genre muzik artis
  • album pertama artis
  • tahun pelepasan album pertama artis

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn