نویسنده(های): پره مارترا
در ابتدا منتشر شد به سمت هوش مصنوعی.
این مقاله بر اساس محتوای کتاب من است.پروژه های مدل های زبان بزرگ: اعمال و اجرای استراتژی ها برای مدل های زبان بزرگ” (Apress) و آزاد دوره آموزشی GitHub در مورد LLM.
برای ایجاد این مقاله، من از عاملی استفاده خواهم کرد که در مقاله قبلی ساخته شده است: نحوه ایجاد یک سیستم عامل پزشکی / RAG.
اما نگران نباشید؛ هم مقاله و هم دفترچه همراه آن همه کدهای لازم را دارند. توضیحات در مورد نحوه ایجاد عامل مانند مقاله ذکر شده مفصل نخواهد بود، زیرا در این مورد، من بیشتر بر روی LangSmith و نحوه ردیابی ترافیک داخلی عامل تمرکز خواهم کرد.
مثل همیشه، این مقاله بر اساس کد یک نوت بوک است که می توانید در اینجا پیدا کنید:
دوره-درس-مدل-نوت بوک-مدل-زبان/4-ارزیابی LLM/4_2_tracing_medical_agent.ipynb در اصلی ·…
دوره عملی در مورد مدل های زبان بزرگ. . مشارکت در دوره آموزشی peremartra/Large-Language-Model-Notebooks…
github.com
توصیه من این است که هنگام خواندن مقاله نوت بوک را باز کنید و پس از پایان کار نسخه خود را ایجاد کنید.
ابتدا بیایید بارگذاری کنیم مجموعه داده. همانطور که قبلاً اشاره کردم، کد را اضافه می کنم اما بدون توضیح دقیق.
!pip install -q langchain==0.3.0
!pip install -q langchain-openai==0.2.0
!pip install -q langchainhub==0.1.21
!pip install -q datasets==3.0.0
!pip install -q chromadb==0.5.5
!pip install -q langchain-community==0.3.0from datasets import load_dataset
data = load_dataset("keivalya/MedQuad-MedicalQnADataset", split='train')
data = data.to_pandas()
# Uncoment this line if you want to limit the size of the data.
# data = data[0:100]
اکنون مجموعه داده را در متغیر بارگذاری کرده اید Data
. به یاد داشته باشید، اگر در حال اجرای یک آزمایش هستید، بهتر است فقط از بخشی از داده ها استفاده کنید تا در زمان اجرا صرفه جویی کنید.
ابزاری که عامل ما از آن استفاده می کند یک بازیابی است که اطلاعات ذخیره شده در یک پایگاه داده برداری را جستجو می کند و اساساً به عنوان یک سیستم RAG ساده عمل می کند. پایگاه داده برداری که من استفاده خواهم کرد ChromaDB است و از آنجایی که عامل با استفاده از LangChain ساخته خواهد شد، برای بارگیری برخی از کتابخانه ها و بارگذاری داده ها ضروری است.
قبل از ادامه، مایلم تاکید کنم که برای ایجاد عامل نیازی به استفاده از LangChain نیست. شما می توانید از هر فریمورک دیگری مانند LlamaIndex استفاده کنید و با LangSmith نیز به خوبی کار خواهد کرد.
مجموعه داده را در پایگاه داده برداری بارگیری و ذخیره کنید.
from langchain.document_loaders import DataFrameLoader
from langchain.vectorstores import Chromadf_loader = DataFrameLoader(data, page_content_column="Answer")
داده های مربوط به نماینده ما در ذخیره می شود df_loader
متغیر، و باید به پایگاه داده برداری منتقل شود. با این حال، از آنجایی که این متون طولانی هستند، ابتدا باید به قطعات تقسیم شوند.
برای تقسیم سند به تکه های مختلف، از آن استفاده می کنیم CharacterTextSplitter کلاس از Langchain.
from langchain.text_splitter import CharacterTextSplittertext_splitter = CharacterTextSplitter(chunk_size=1250,
separator="\n",
chunk_overlap=100)
texts = text_splitter.split_documents(df_document)
همپوشانی مقدار متنی است که بین تکه ها تکرار می شود. به عنوان مثال، اگر یک همپوشانی 100 را مشخص کنید، 100 کاراکتر اول یک قطعه با 100 کاراکتر آخر قبلی مطابقت دارد.
این قطعه همیشه در کاراکتر 1250 تقسیم نمی شود. در واقع، این اتفاق به ندرت رخ خواهد داد. برای تقسیم متن، تابع منتظر می ماند تا کاراکتر جداکننده مشخص شده را پیدا کند، به طور پیش فرض ‘\n\n’ است، اما من آن را با ‘\n’ تغییر دادم، بنابراین زمان هایی وجود دارد که قبل و زمان های دیگر تقسیم می شود.
زمان تبدیل متن به جاسازی و ذخیره آنها در ChromaDB است.
اما ابتدا اجازه دهید محیط را با کلیدهای لازم برای ادامه توسعه پیکربندی کنیم.
os.environ["LANGCHAIN_API_KEY"] = getpass("LangChain API Key: ")
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"]="https://api.smith.langchain.com"
os.environ["LANGCHAIN_PROJECT"]="langsmith_test_agent"
میتوانید کلید API LangChain خود را از قسمت Personal->Settings خود دریافت کنید پنل لانگ اسمیت.
اکنون همه چیز برای ایجاد پایگاه داده و بارگذاری اطلاعات فرمت شده مناسب در آن آماده است.
# We load the text-embedding-ada-002 model from OpenAI.
from langchain_openai import OpenAIEmbeddingsmodel_name = 'text-embedding-ada-002'
embed = OpenAIEmbeddings(
model=model_name
)
برای تبدیل متن به جاسازی، از مدل OpenAI ‘text-embedding-ada-002’ استفاده می کنیم.
شما پایگاه داده برداری را با ارسال متن و مدل تعبیهها ایجاد میکنید.
model="gpt-4o"
#model="gpt-3.5-turbo"from langchain.chat_models import ChatOpenAI
from langchain_openai import OpenAI
from langchain.chains.conversation.memory import ConversationBufferWindowMemory
from langchain.chains import RetrievalQA
llm=OpenAI(temperature=0.0)
conversational_memory = ConversationBufferWindowMemory(
memory_key='chat_history',
k=4, #Number of messages stored in memory
return_messages=True #Must return the messages in the response.
)
qa = RetrievalQA.from_chain_type(
llm=llm,
#chain_type="stuff",
retriever=chroma_db.as_retriever()
)
ممکن است به نظر برسد که ما فقط بازیابی را ایجاد کرده ایم که عامل برای دسترسی به اطلاعات از پایگاه داده برداری استفاده می کند. و این درست است، اما از آنجایی که شما قبلاً متغیرهای محیطی لازم را برای عملکرد LangSmith پیکربندی کرده اید، به محض استفاده از retriever، اطلاعات شروع به ثبت نام در LangSmith می کند.
اولین ورود به لانگ اسمیت
به عنوان مثال، چیزی به سادگی این فراخوانی به بازیابی کننده:
qa.run("What is the main symptom of LCM?")
یک ورودی در LangSmith با:
- پرس و جو
- اسناد پیدا شده
- متن برگشتی
- و زمان صرف شده برای هر اقدام.
اما بیشتر وجود دارد! همچنین اعلان ایجاد شده در کنار پاسخ مدل را خواهید یافت.
ایجاد و ردیابی عامل.
فکر می کنم شما به همان اندازه شگفت زده شده اید که من اولین باری که از LangSmith استفاده کردم. “اما من هیچ کاری نکرده ام! فقط باید چند متغیر محیطی تنظیم میکردم و تمام!» خوب، بله، واقعاً به همین سادگی است – و موارد بیشتری نیز وجود دارد.
برای ادامه، اولین گام ایجاد عامل خواهد بود و با ابزاری که برای دسترسی به اطلاعات استفاده می کند شروع می شود.
from langchain.agents import Tool#Defining the list of tool objects to be used by LangChain.
tools = [
Tool(
name='Medical KB',
func=qa.run,
description=(
"""use this tool when answering medical knowledge queries to get
more information about the topic"""
)
)
]
شما عامل و مجری عامل را ایجاد می کنید:
from langchain.agents import create_react_agent
from langchain import hubprompt = hub.pull("hwchase17/react-chat")
agent = create_react_agent(
tools=tools,
llm=llm,
prompt=prompt,
)
# Create an agent executor by passing in the agent and tools
from langchain.agents import AgentExecutor
agent_executor2 = AgentExecutor(agent=agent,
tools=tools,
verbose=True,
memory=conversational_memory,
max_iterations=30,
max_execution_time=600,
handle_parsing_errors=True
)
اکنون میتوانیم با نماینده تماس بگیریم و ببینیم که چگونه اطلاعات در LangChain ذخیره میشود.
agent_executor2.invoke({"input": """I have a patient that can have Botulism,
how can I confirm the diagnosis?"""})
می بینید که میزان اطلاعات ردیابی شده بسیار زیاد است. تماس با Retriever تحت RetrievalQA گروه بندی می شود و پاسخ نهایی تحت OpenAI است.
همانطور که میدانید، من نمیتوانم تمام صفحههای LangSmith را با تمام اطلاعات تولید شده اضافه کنم. فکر نمیکنم ارزش زیادی بیافزاید و باعث اتلاف زمان و مکان میشود. اگر به کاوش در اطلاعات ذخیره شده علاقه دارید، بهترین کار این است که نوت بوک را اجرا کنید و خودتان آن را ببینید!
نتیجه گیری
اگر قبلاً با LangSmith آشنایی نداشتید، فکر می کنم اکنون از قدرت و سهولت استفاده آن شگفت زده شده اید.
توصیه می کنم مقاله را نیز بخوانید: ارزیابی خلاصه های LLM با استفاده از فاصله جاسازی با LangSmith. از ارزیابهای لانگ اسمیت برای جمعآوری معیارهای عملکرد یک مدل زبان بزرگ استفاده میکند.
LangSmith بخشی از موج جدیدی از ابزارهای متصل به دنیای مدلهای زبان بزرگ است که برای آسانتر ساختن برنامههای کاربردی با آنها توسعه یافته است.
دوره کامل در مورد مدلهای زبان بزرگ در Github موجود است. برای به روز ماندن در مورد مقالات جدید، لطفاً مخزن را دنبال کنید یا آن را ستاره دار کنید. به این ترتیب، هر زمان که محتوای جدیدی اضافه شود، اعلان دریافت خواهید کرد.
پروژه های مدل های زبان بزرگ: اعمال و اجرای استراتژی ها برای مدل های زبان بزرگ
Amazon.com: پروژههای مدلهای زبان بزرگ: اعمال و اجرای استراتژیها برای مدلهای زبان بزرگ: 9798868805141…
amzn.to
من در مورد می نویسم هوش مصنوعی مولد، یادگیری عمیق و TensorFlow به طور منظم در نظر بگیرید من را در مدیوم دنبال می کند برای دریافت به روز رسانی در مورد مقالات جدید. و، البته، شما خوش آمدید با من در ارتباط باشید لینکدین.
منتشر شده از طریق به سمت هوش مصنوعی
منبع: https://towardsai.net/p/machine-learning/tracing-a-llm-agent-with-langsmith