نویسنده(های): دیوی
در ابتدا منتشر شد به سمت هوش مصنوعی.
قسمت 2 از مجموعه 2 قسمتی مبتدی که موارد استفاده سرگرم کننده مولد هوش مصنوعی را با Gemini بررسی می کند تا مهارت های عکاسی شما را افزایش دهد!
معرفی و کاربرد RAG برای مبتدیان
به عنوان یک عکاس آماتور، روش هایی را که می توانم استفاده کنم، آزمایش می کنم هوش مصنوعی مولد تا در حرفه ام بهتر شوم در این پست وبلاگ، من شما را از طریق فرآیند ایجاد یک برنامه کاربردی پاسخگوی ساده تعاملی با استفاده از Python، Gemini Flash Pro API، LangChain و Gradio راهنمایی خواهم کرد.
من اخیراً اولین دوربین فوجی خود را دریافت کردم و تصمیم گرفتم از RAG و Gemini برای ایجاد یک برنامه Fuji X-S20 Q & A استفاده کنم. این برنامه به هر سوالی در مورد دوربین فوجی X-S20 پاسخ می دهد (بدون اینکه نیاز به ریختن کتابچه راهنمای 400 صفحه ای داشته باشید)!
📔این یک آموزش برای مبتدیان است که به سرعت در مورد آن یادداشت کنید بازیابی نسل افزوده (RAG) و LangChain قبل از شروع کار عملی.
درک نحوه عملکرد RAG در 4 مرحله
RAG را می توان در 4 مرحله متوالی خلاصه کرد:
- در حال بارگیری داده های ما (معروف به بلع داده ها)
- شکستن داده های ورودی ما به قطعات کوچکتر
- ایجاد جاسازی (به انتخاب شما)
- ذخیره سازی جاسازی ها در پایگاه داده برداری (به انتخاب شما)
درک نحوه عملکرد LangChain
LangChain یک چارچوب متن باز است که برای ساخت آسان برنامه هایی که از مدل های زبانی استفاده می کنند طراحی شده است.
به طور خاص، به مدیریت تعبیهها، تعامل با پایگاههای داده برداری، و یکپارچهسازی با منابع داده مختلف از فرآیند فرآیند 4 مرحلهای کمک میکند. برای گردآوری همه اینها، تصویر زیر را با توجه به نحوه استفاده از LangChain در برنامه پرسش و پاسخ ما ترسیم کردهام.
تفکیک 11 مرحله ای ساخت برنامه ما
1. ایجاد یک محیط جدید conda و وارد کردن ماژول های مورد نیاز
اگر روی رایانه خود کار می کنید، یک محیط conda جداگانه برای اجرای پروژه های LangChain ایجاد کنید و آن را چیزی مانند ‘env_langchain’ بنامید تا واضح باشد. در آینده می توانید در صورت نیاز از این محیط برای هر پروژه LangChain دیگری که ایجاد می کنید استفاده کنید. همه کتابخانه ها و ماژول های لازم را از فایل requires.txt بارگیری کنید. این مرحله میتواند بیشترین زمان و صبر را ببرد، اما زمانی که این مرحله را درست انجام دهید، همه چیز آسان خواهد بود.
من کد VS را به عنوان IDE خود برای این پروژه انتخاب کردم. در ویندوز، فشار دادن «Ctrl+Shift+P» به شما امکان میدهد محیط جدید «env_langchain» را به عنوان مفسر انتخاب کنید. برای شروع کار در این محیط تایپ کنید conda activate env_langchain
در ترمینال
را requirements.txt
فایل لیست کتابخانه هایی را که برای اجرای موفقیت آمیز این برنامه باید نصب شوند را فهرست می کند
ماژول ها و هدف آنها با نظرات زیر نشان داده شده است.
import os # Interacts with the operating system
import gradio as gr # Web framework for interactive applications
from langchain_community.document_loaders import PyPDFLoader # Loads and parses PDF documents
from langchain.text_splitter import RecursiveCharacterTextSplitter # Splits text into manageable chunks
from langchain_chroma import Chroma # Manages vector stores for document embeddings
from langchain_google_genai import GoogleGenerativeAIEmbeddings # Generates embeddings using Google’s Generative AI
from dotenv import load_dotenv # Loads environment variables from .env file
from langchain_google_genai import ChatGoogleGenerativeAI # For conversational AI
from langchain.chains import create_retrieval_chain # Creates retrieval chains
from langchain.chains.combine_documents import create_stuff_documents_chain # Combines document processing
from langchain_core.prompts import ChatPromptTemplate # For creating prompt templates
2. بارگذاری متغیرهای محیطی
ما متغیرهای حساس به محیط (مانند کلید Google API ما) را با استفاده از آن بارگیری می کنیم dotenv
. فایل در IDE خود (مانند VS Code). مطمئن شوید که یک را ایجاد کنید .env
فایل را با کلید API در پوشه پروژه خود، که می توانید به صورت رایگان از اینجا بازیابی کنید: https://aistudio.google.com/app/u/1/apikey
3. بارگذاری کتابچه راهنمای PDF
در مرحله بعد، سند PDF خود را که در مورد من کتابچه راهنمای دوربین 400 صفحه ای دوربین فوجی XS20 بود، بارگذاری می کنیم: https://fujifilm-dsc.com/en-int/manual/x-s20/x-s20_manual_en_s_f.pdf
pythonCopy codloader = PyPDFLoader("Fuji_xs20_manual.pdf") # Initialize the PDF loader
data = loader.load() # Load the entire PDF as a single Document
4. تقسیم متن
از آنجایی که سند می تواند بزرگ باشد، قبل از تنظیم جاسازی ها، متن را به تکه های قابل مدیریت تقسیم می کنیم:
pythonCopy codetext_splitter = RecursiveCharacterTextSplitter(chunk_size=1000) # Initialize the text splitter
docs = text_splitter.split_documents(data) # Split the loaded data into smaller documents
print("Total number of documents: ", len(docs)) # Display the total number of documents
5. راه اندازی Embeddings
اکنون مدل embedding را راه اندازی می کنیم و یک فروشگاه برداری ایجاد می کنیم:
embeddings = GoogleGenerativeAIEmbeddings(api_key=api_key, model="models/embedding-001") # Initialize the embedding model
vectorstore = Chroma.from_documents(documents=docs, embedding=embeddings) # Create a Chroma vector store
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 10}) # Set up the retriever
6. پیکربندی مدل زبان
در مرحله بعد، مدل زبانی را پیکربندی می کنیم که به سؤالات ما پاسخ می دهد:
llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro", temperature=0.3, max_tokens=500) # Initialize the language model
7. ایجاد Prompt Template
ما نحوه پاسخگویی مدل به پرس و جوها را تعریف می کنیم:
system_prompt = (
"You are an assistant for question-answering tasks. "
"Use the following pieces of retrieved context to answer "
"the question. If you don't know the answer, say that you "
"don't know. Use three sentences maximum and keep the "
"answer concise."
"\n\n"
"{context}"
)
prompt = ChatPromptTemplate.from_messages(
[
("system", system_prompt), # System-level instructions
("human", "{input}"), # User input placeholder
]
)
8. ایجاد زنجیره پرسش و پاسخ
اکنون می توانیم زنجیره ای را ایجاد کنیم که پرس و جوهای کاربر را پردازش می کند:
question_answer_chain = create_stuff_documents_chain(llm, prompt)
rag_chain = create_retrieval_chain(retriever, question_answer_chain) # Create a Retrieval-Augmented Generation (RAG) chain
9. رسیدگی به پرس و جوهای کاربر
ما یک تابع برای پردازش پرس و جوهای کاربر تعریف می کنیم:
def answer_query(query):
if query:
response = rag_chain.invoke({"input": query}) # Invoke the RAG chain with the user query
return response["answer"] # Return the answer from the assistant
10. تنظیم رابط Gradio
در نهایت، ما یک رابط وب ساده با استفاده از Gradio راه اندازی کردیم:
iface = gr.Interface(
fn=answer_query, # Function to call for generating the response
inputs="text", # Input type for the query
outputs="text", # Output type for the answer
title="RAG Application Built on Gemini Model",
description="Ask any question about your Fuji X-S20 camera"
)
# Launch the Gradio app
if __name__ == "__main__":
iface.launch()
اسکریپت پایتون را اجرا کنید: در ترمینال، به پوشه حاوی خود بروید app.py
فایل (اگر از قبل در دایرکتوری مناسب نیستید) و دستور زیر را تایپ کنید:
python app.py
نتیجه گیری
شما اکنون یک برنامه کاملا کاربردی برای پاسخگویی به سوالات دارید که از قدرت Gemini، LangChain و Gradio استفاده می کند! شما می توانید هر گونه سوالی در مورد دوربین فوجی X-S20 بپرسید و برنامه بر اساس اطلاعات استخراج شده از راهنمای PDF پاسخ خواهد داد.
با ادغام اسناد بیشتر یا انواع مختلف رابط کاربری، این پروژه را سفارشی و گسترش دهید. کد نویسی مبارک!
توجه: Gradio یک پیوند عمومی قابل اشتراکگذاری به شما میدهد، اما در عرض 75 ساعت منقضی میشود.
با ما همراه باشید! برای محتوای بیشتر هوش مصنوعی و ابری، من را در Medium دنبال کنید
🎨🎨🎨”من هنوز دارم یاد میگیرم.” — میکل آنژ (در 87 سالگی)🖌️🖼️🖌️
منتشر شده از طریق به سمت هوش مصنوعی
منبع: https://towardsai.net/p/l/building-a-fuji-x-s20-camera-qa-app-with-gemini-langchain-and-gradio