Tutorial ini menunjukkan membina ejen AI perbualan yang serba boleh menggunakan Langchain, rangka kerja yang kuat yang mengintegrasikan model bahasa yang besar (LLMS) dengan alat luaran dan API. Ejen ini boleh melaksanakan tugas yang pelbagai, daripada menjana nombor rawak dan menawarkan pemikiran falsafah untuk mendapatkan semula dan memproses maklumat secara dinamik dari halaman web. Gabungan alat pra-bina dan adat membolehkan tindak balas masa nyata, konteks, dan maklumat bermaklumat.
*Artikel ini adalah sebahagian daripada *** Data Science Blogathon.
Tool
untuk mengikis webSinergi Langchain, Openai, dan Duckduckgo membolehkan AI perbualan yang canggih. LLM Openai menyediakan pemprosesan bahasa semulajadi, sementara DuckDuckGo menawarkan API carian yang berfokus pada privasi. Gabungan ini membolehkan AI menjana tindak balas yang relevan secara kontekstual dan mengambil data masa nyata, meningkatkan kebolehsuaian dan ketepatannya. Toolkit yang kuat ini sangat sesuai untuk membuat chatbots pintar atau pembantu maya yang mampu mengendalikan pertanyaan pengguna yang pelbagai.
Mulakan dengan memasang pakej python yang diperlukan menggunakan PIP:
<code>!pip -q install langchain==0.3.4 openai pip install langchain !pip -q install duckduckgo-search</code>
Sahkan pemasangan Langchain:
<code>!pip show langchain</code>
Dapatkan kunci API Openai anda dan tetapkannya sebagai pemboleh ubah persekitaran:
<code>import os os.environ["OPENAI_API_KEY"] = "your_openai_key_here"</code>
Gantikan "your_openai_key_here"
dengan kunci sebenar anda. Ini penting untuk berinteraksi dengan model GPT-3.5-Turbo.
Mewujudkan sambungan ke model Openai menggunakan Langchain:
<code>from langchain import OpenAI from langchain.chat_models import ChatOpenAI from langchain.chains.conversation.memory import ConversationBufferWindowMemory # Configure the GPT-4o LLM turbo_llm = ChatOpenAI( temperature=0, model_name='gpt-4o' )</code>
Suhu yang rendah (suhu = 0) memastikan tindak balas yang konsisten.
Tingkatkan keupayaan ejen anda dengan menambahkan alat carian DuckDuckGo:
<code>from langchain.tools import DuckDuckGoSearchTool from langchain.agents import Tool from langchain.tools import BaseTool search = DuckDuckGoSearchTool() # Define the tool tools = [ Tool( name = "search", func=search.run, description="Best for questions about current events. Use precise queries." ) ]</code>
Alat ini, yang digambarkan sebagai ideal untuk peristiwa semasa, ditambah kepada toolkit ejen.
Panjangkan fungsi ejen anda dengan alat tersuai:
Fungsi ini memberikan respons yang menggembirakan terhadap persoalan makna hidup:
<code>def meaning_of_life(input=""): return 'The meaning of life is 42 (approximately!)' life_tool = Tool( name='Meaning of Life', func= meaning_of_life, description="Use for questions about the meaning of life. Input: 'MOL'" )</code>
Alat ini menjana bilangan bulat rawak antara 0 dan 5:
<code>import random def random_num(input=""): return random.randint(0,5) random_tool = Tool( name='Random number', func= random_num, description="Use to get a random number. Input: 'random'" )</code>
Mewujudkan ejen perbualan dengan alat tersuai membolehkan interaksi yang sangat disesuaikan.
Import initialize_agent
dan tentukan alat:
<code>from langchain.agents import initialize_agent tools = [search, random_tool, life_tool]</code>
Melaksanakan Memori Menggunakan ConversationBufferWindowMemory
:
<code>from langchain.chains.conversation.memory import ConversationBufferWindowMemory memory = ConversationBufferWindowMemory( memory_key='chat_history', k=3, return_messages=True )</code>
Ini membolehkan ejen untuk mengingati perbualan baru -baru ini (sehingga 3).
Memulakan ejen:
<code>conversational_agent = initialize_agent( agent='chat-conversational-react-description', tools=tools, llm=turbo_llm, verbose=True, max_iterations=3, early_stopping_method='generate', memory=memory )</code>
Parameter menentukan jenis ejen, alat, LLM, kelebihan, had lelaran, berhenti awal, dan ingatan.
Berinteraksi dengan ejen:
<code>conversational_agent("What time is it in London?") conversational_agent("Can you give me a random number?") conversational_agent("What is the meaning of life?")</code>
Tentukan tingkah laku ejen dengan menyesuaikan sistem yang cepat:
<code># system prompt conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template</code>
<code>fixed_prompt = '''Assistant is a large language model... [modified prompt instructing the agent to use tools appropriately]'''</code>
Memohon prompt yang diubah suai:
<code>conversational_agent.agent.llm_chain.prompt.messages[0].prompt.template = fixed_prompt</code>
Menguji semula ejen.
Tool
untuk mengikis webBuat alat tersuai untuk mengekstrak teks biasa dari halaman web:
<code>from bs4 import BeautifulSoup import requests from langchain.agents import Tool def stripped_webpage(webpage): # ... (function to fetch and clean webpage text) ... web_scraper_tool = Tool( name='Web Scraper', func=stripped_webpage, description="Fetches and cleans webpage text (limited to 4000 characters)." )</code>
Mengintegrasikan alat ini ke dalam ejen anda.
WebPageTool
Penyelesaian yang lebih mantap melibatkan mewujudkan kelas WebPageTool
tersuai:
dari Langchain.Tools Import Basetool dari bs4 import cantikSoup permintaan import Kelas WebpageTool (Basetool): # ... (definisi kelas seperti dalam respons asal) ...
Reinitialize ejen dengan alat baru dan prompt sistem yang dikemas kini. Uji dengan contoh seperti:
Conversional_agent.run ("Adakah terdapat artikel mengenai rumah kelab di https://techcrunch.com/? Hari ini") perbualan_agent.run ("Apa cerita teratas di www.cbsnews.com/?")
Tutorial ini menunjukkan membina ejen perbualan yang sangat mudah disesuaikan menggunakan Langchain. Reka bentuk modular membolehkan pengembangan dan penyesuaian mudah. Ejen ini mempamerkan kuasa menggabungkan AI dengan akses data masa nyata.
(Soalan Lazim yang sama seperti dalam respons asal, ditulis semula untuk aliran dan kesimpulan yang lebih baik.)
Atas ialah kandungan terperinci Menyediakan alat dan ejen tersuai di Langchain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!