ایجاد چند جانباز در آنجا به روشی ساده

من در اینجا مجموعه ای از مقاله ها را شروع می کنم که از ابتدایی ترین تا پیشرفته ترین در مورد جهان می نویسم هوش مصنوعی (AI)بشر در حال حاضر ، وقتی این مقاله را می نویسم ، دیگر مستقیماً با آنجا کار نمی کنم ، اما این من است PDI (برنامه توسعه فردی) ، یعنی چیزی که من مطالعه می کنم زیرا می دانم آینده خواهد بود.
بنابراین ، در این مقاله ، من به شما یاد می دهم که چگونه نه تنها یک چت بابات ساده را توسعه دهید (زیرا این هیچ ارزش در بازار ندارد) ، بلکه سه عامل هوش مصنوعی با استفاده از چارچوب لانگچین اشمیه پیتونبشر
ایده این است که من می توانم در مورد پیوند اینترنتی خاصی که به آن می دهم از آنجا بپرسم. نماینده انجام خواهد داد خراش این URL زمینه صفحه + سوال شما را به هوش مصنوعی می برد و سپس جواب شما را باز می گرداند و مانع از خواندن کل سایت یا خلاصه کردن آن به صورت دستی می شود. عامل سوم هوش مصنوعی مسئولیت فراخوانی تابعی را بر عهده خواهد داشت که کد پایتون را در صورت تقاضا قالب بندی می کند. حال ممکن است از خود بپرسید: چگونه AI می تواند این توابع را از طریق سؤالات متمایز کند؟ هنوز با من! 👇
این طرح (مگا هنری) نحوه عملکرد آن را توضیح می دهد. در لانگچین آنچه را ما صدا می کنیم ابزار، که به معنای واقعی کلمه ابزارهایی هستند که می توانند هم یک عملکرد ساده پایتون باشند ، بدون وجود ، و عملکردی که در آنجا دخیل است. با ابزارهای خود می توانیم نوعی ایجاد کنیم کیت ابزار (ابزار ابزار)بشر با استفاده از برخی از کارکردهای Langchain ، لیستی از این ابزارها را منتقل می کنیم و ، زیر پارچههوش مصنوعی سؤال شما را شامل می شود و تصمیم می گیرد که بهترین ابزار (عامل) برای پاسخگویی به کدام بهترین ابزار باشد. باحال ، نه؟
اکنون که ایده و عملکرد کلی را توضیح می دهیم ، بیایید به کد برویم! در پایان مقاله ، من قبلاً در خودم منتشر کردم لوب مخزن با کد کامل. اما ابتدا ، بیایید به قطعات برویم تا بهتر درک کنیم.
ساختار پرونده پروژه
📁 projeto-langchain
│── .env # Armazena a chave da OpenAI (ainda não tenho poder computacional para rodar um LLaMA 3.3 70B 😅)
│── .gitignore # Evita subir o .env e expor minha chave.
│── agents.py # Concentra as funções dos agentes (tools) e a função main.
│── scrapper.py # Função que utiliza BeautifulSoup para raspagem de dados da URL, caso seja fornecida na pergunta.
│── README.md # Explicação do projeto, requisitos e como utilizá-lo.
شروع با ساده ترین ، scrapper.py:
import requests
from bs4 import BeautifulSoup
def get_text_from_url(url: str) -> str:
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
for script in soup(['script', 'style']):
script.extract()
text = soup.get_text()
return "\n".join(line.strip() for line in text.splitlines() if line.strip())
return f"Erro ao acessar a URL. Status Code: {response.status_code}"
این کد تابعی به نام را تعریف می کند get_text_from_url
چه:
- یک نیاز HTTP را دریافت می کند برای دریافت محتوای صفحه.
-
در صورت موفقیت آمیز درخواست بررسی می شود (
status_code 200
). - USA زیبا برای انجام تجزیه و تحلیل html.
-
حذف به عنوان برچسب ها
اشمیه
, eliminando conteúdo desnecessário.
- Extrai e formata o texto da página, removendo espaços extras.
- Se a requisição falhar, retorna um erro com o código de status.
O objetivo desse código é extrair apenas o texto relevante da página, para que nosso agente (tool) possa utilizá-lo.
🤖 Construindo os Agentes em agents.py
ما کتابخانه های لازم را وارد می کنیم:
import os
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
from scrapper import get_text_from_url
from langchain_core.messages import HumanMessage, SystemMessage
from langchain.tools import tool
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.agents import AgentExecutor, create_openai_tools_agent
🔍 توضیح کتابخانه ها:
-
load_dotenv()
: متغیرهای محیط پرونده را بارگیری می کند.env
بشر -
ChatOpenAI
: به شما امکان می دهد با مدل های چت OpenAi تعامل داشته باشید. -
tool
: دکوراسیون که توابع را به عنوان ابزار عامل تعریف می کند. -
AgentExecutor
: مدیریت اعدام نمایندگان.
اکنون ، عملکردی که پیام ها را به OpenAI ارسال می کند:
def get_response_from_openai(message: str):
llm = ChatOpenAI(model_name="gpt-3.5-turbo")
response = llm.invoke(message)
return response
ation نماینده مستندات (documentation_tool
)
@tool
def documentation_tool(url: str, question: str) -> str:
"""Recebe uma URL de documentação e uma pergunta sobre ela."""
context = get_text_from_url(url)
message = [
SystemMessage(content="Explique documentações técnicas de forma simples."),
HumanMessage(content=f"Documentação: {context}\n\n Pergunta: {question}")
]
response = get_response_from_openai(message)
return response
ation عامل قالب بندی کد (black_formatter_tool
)
@tool
def black_formatter_tool(code: str) -> str:
"""Recebe um caminho de arquivo Python e formata seu código usando Black."""
try:
os.system(f"poetry run black {code}")
return "Done!"
except:
return "Error! formatter"
🔗 عوامل اتصال
toolkit = [documentation_tool, black_formatter_tool]
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
ما نماینده را ایجاد کردیم:
prompt = ChatPromptTemplate.from_messages([
("system", "Use suas ferramentas para responder perguntas."),
MessagesPlaceholder("chat_history", optional=True),
("human", "{input}"),
MessagesPlaceholder("agent_scratchpad")
])
agent = create_openai_tools_agent(llm, toolkit, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=toolkit, verbose=True)
🏁 اجرای فیلمنامه
def main():
while True:
try:
pergunta = input("\nDigite sua pergunta (ou 'sair' para encerrar): ")
if pergunta.lower() == 'sair':
print("Até logo!")
break
resposta = agent_executor.invoke({"input": pergunta})
print("\nResposta:", resposta["output"])
except KeyboardInterrupt:
print("\nPrograma encerrado pelo usuário.")
break
اکنون ، فقط اجرا کنید:
python agents.py
بیایید یک مثال عملی با یک فناوری ببینیم که من طرفدار DuckDB هستم؟
پرسیدن سوال و عبور از URL مستندات DUCKDB:
نتیجه:
توجه داشته باشید که:
- او سوال من را “بهبود بخشید”.
- همانطور که می توانیم همه ردیابی ها را ببینیم ، می توانیم ببینیم که وی از صفحه مرتبط است.
- از آنجا که من از ارزانترین مدل Openai GPT 3.5 استفاده می کردم شاید او نفهمیده است که من آن را به زبان پرتغالی دوست دارم (به مهندس سریع AI LOL نگاه کنید) ، شاید باید این سؤال را مطرح کند.
آماده! ساده همانطور که گفتم درست است؟ در مقاله بعدی ما از تکنیک Rag (Retieval-Augmeld Generation) برای کسب اطلاعات بیشتر در مورد این تکنیک یادگیری برای AI استفاده خواهیم کرد و همچنین با پایگاه داده وکتور درگیر می شویم.
من می خواستم انگیزه ای برای نوشتن این مقاله در اینجا کانال YouTube Datawaybr داشته باشم
Linkedln من برای دنبال کردن من ، من همیشه مباحث مربوط به مهندسی داده را ارسال می کنم و در آنجا: https://www.linkedin.com/in/airton-lira-junior-6b81a661/
با تشکر از شما ، مراقب باشید ، آب بنوشید و فعالیت بدنی را تمرین کنید