The Debugging Diaries
88 subscribers
63 photos
47 videos
33 files
73 links
گوشه‌ای برای یادداشت و ثبت مطالب مربوط به پایتون، یادگیری عمیق و هوش و هر چی که مربوط به تکنولوژی باشه.
加入频道
قطعا ollama جزو بهترین ابزارهایی بود که برای تست و mvp و ... عالی بود.
اما همونطور که می‌دونید بسیار بسیار پر دردسر هست مخصوصا اگر شما خودت متخصص باشی و بخوای داخلش دستکاری هم انجام بدی.

بسیار پروژه‌های جایگزین هم اومد ولی همچین شرایط بهتری نداشت؛ ۱-۲ مورد از مشکلات رو حل میکردند ولی توی باقی بخش‌ها مشکلات رو داشتند.

حالا تیم NeXAAI هم وارد این رقابت شده و چه ورودی؛ با یک SDK ساده
این تیم نه تنها مدل های متنی که مدل‌های مربوط به تولید تصویر و حتی صدا و .... رو هم پشتیبانی می‌کنه.
کاستومایزیشن‌های بسیار بیشتری برای افراد فنی میده و یک مدل‌ها فوق‌العاده داره که فیلتر و جستجوی قوی هم داره نسبت به ollama

مشکلی که داره؛ هنوز تو مرحله توسعه اولیه هست برای همین ممکن به تعدادی باگ روی serve کردن و customization بخورید؛ برای من با سوال و جواب حل شد.

https://nexaai.com/

403 هم نخواهید گرفت
یک سری از افراد اومدند و پرامپت‌هایی رو منتشر کردند که عملکردی مشابه chatGpt o1 رو پیاده‌سازی می‌کنه و شاید باعث سورپرایز شما هم بشه اما واقعا این روش باعث شده نتایج بسیار بهتری داده بشه توسط مدل‌ها؛
llama3.1, gemini flash, qwen2, chatGpt-4omini

مدل‌هایی بوده که تست شده و توی تمام موارد عملکرد بسیار بهتری نشون داده نسبت به پرامپت‌های معمول بطور خلاصه اینطوری هست که شما ۵-۶ پرامپت رو آماده می‌کنی و جواب هر مرحله رو بعنوان history برای مرحله بعدی ارسال می‌کنی.

من روش ۵ مرحله‌ای رو با عملکرد بهتر دیدم پس همون رو میگم:

۱- آنالیز مسئله؛ توی این مرحله از مدل می‌خواید که سوال کاربر رو بطور کامل تحلیل کنه (البته بصورت خلاصه) و نکات مهمش رو بهتون بده.

۲- برنامه‌ریزی استراتژی؛ با توجه به خروجی مرحله قبل از مدل می‌خواید که چندتا استراتژی مختلف برای حل این مسئله ارائه بده (۳-۵ مورد کار رو در میاره)

۳- انتخاب استراتژی؛ توی این مرحله از مدل می‌خواید یکی از استراتژی‌های مرحله قبل رو انتخاب کنه (موردی که منطقی‌تر هست)

۴- اقدامات لازم؛ از مدل می‌خواید که با توجه له استراتژی و آنالیز مسئله قدم به قدم آنچه برای حل مسئله نیاز هست رو در بیاره و بنویسه.

۵- در نهایت پرامپت اصلی کاربر + اقدامات لازم برای حل مسئله رو بعنوان ورودی به مدل میدید و بهش می‌گید که برای حل مسئله این اقدامات رو دنبال کنه تا جواب نهایی رو بگیره.

مجموع این ۵ مورد کنار هم عملکرد مدل‌های معمول موجود رو بسیار بسیار بهبود میده.
هزینه کمتری هم نسبت به chatGpt-o1 داره
خیلی اوقات برای کارهای مختلف NLP نیاز به امبدینگ هست
تصویر بالا یه api تمیز برای این کار با لایبری fastApi هست
#python
#ML
یسری قالب‌ها برای مهندسی پرامپت در تسک‌های مختلف
#LLM
Forwarded from PyTorch Howsam
کتاب Hands-on LLMs از آقای Jay Alammar

اخیرا این کتاب معرفی شده و مطابق انتظار با استقبال خوبی مواجه شده. آقای Jay Alammar رو هم احتمالا می‌شناسید دیگه! همون کسی که بلاگ پست‌های آموزشی با شکل‌ها و انیمیشن‌های متنوع داره. این کتاب هم پر از شکل‌های جالب هست که فهم مطالب رو برای مخاطب ساده میکنه. فهرست مطالب و یک نمونه شکل ساده از فصل اول کتاب رو براتون گذاشتم.

امسال چند تا کتاب خوب درباره LLM از افراد معتبر معرفی کردم:
* کتاب Afshine & Shervine Amidi
* کتاب Louis-François Bouchard
* کتاب Sebastian Raschka

@pytorch_howsam
ابتدا با یسری معادلات سرانگشتی شروع میکنیم که OpenAi توی این بلاگ بهش اشاره کرده
📊✍️
هر توکن برابر با 4 کارکتر انگیلسی هست - هر توکن تقریباً برابر 3/4 کلمه است و هر پارگراف حدود 100 توکن میشه.
📝 هر مدل زبانی دارای میزان محدودی context ورودی هست البته که این میزان احتمالاً با گذر زمان بیشتر میشه ولی الان شاید محدودیتی برای چت به حساب بیاد.

مثلاً:


ChatGPT به میزان 128k
Claude به میزان 200k
در کمال ناباوری برای Gemini این عدد 1M هست. 😲

💡 به هر حال اگه توی چت مجموع توکن ورودی و خروجی از این میزان بیشتر باشه مدل شروع میکنه به فراموش کردن مباحث بالاتر در چت.
📌 برای اینکه این محدودیت اذیت‌کننده نشه، میتونیم از مدل بخواهیم که خلاصه‌ای از کل چت رو بیان کنه که در حافظه‌اش بمونه.

🔗 یه اکستنشن توکن و کلمه‌شمار هم هست که در این لینک می‌تونین برای کروم نصب کنین.


🛠 بریم سراغ مهندسی پرامپت یخورده:
یه داکیومنت خوب هم در این آدرس هست.

📋 ساختار یه پرامپت ساده بهتر به شکل زیر باشه:
1️⃣ مشخص کنی فرمت خروجی به چه حالت باشه (یه توییت، پست بلاگ، مقاله علمی یا چت غیر رسمی و...)
2️⃣ موضوع متن خروجی و سطح آن مثلاً در حد کارشناس باشه (Expert) یا like I am 6
3️⃣ مشخص‌کننده ویژگی متن باشه مثلاً بگی در 800 کلمه یا ساختار ساده دارای خوانایی و روانی متن و...

🔖 مثال:

Write a (blog post) about (healthy eating). Address it to (working professionals) and use keywords that are relevant for SEO. Write the text in a (simple, understandable style) so that it is easy to read and comprehend. The length should be (800 words), and the text should be well-structured.

🔸 موارد درون پرانتز با توجه به موارد ذکر شده قابل تغییر می‌باشند.


برخی از موارد در انتهای پرامپت می‌تونه خیلی موثر باشه:


Let's think step by step
Take a deep breath
If you can do it, I pay you 20 dollars 💸 (motivate)

🔖 مثال خلاقانه:

How can I install Python and play Snake?  
Take a deep breath and think step by step.
You can do it because I give you 20 dollars.


🎭 نکته بعدی دادن Role به LLM هست:


تصور کن تو یه پایتون دوپلور حرفه‌ای هستی که در گوگل به عنوان برنامه‌نویس ارشد کار می‌کنی.
مانند یک نویسنده قوی که نوشته‌های بیشترین فروش در آمازون رو داره.
You are Shakespeare, an English writer. Write me a poem.

📌 سعی کنین در هنگام تخصیص نقش به مدل با جزئیات زیادی بیان کنین که کلمات مراعات نظیر اون ما رو به نتیجه نهایی که می‌خواهیم نزدیک‌تر کنه.


خلاصه به عنوان نتیجه‌گیری:
هر چی بیشتر توضیح بدی، حتی توضیح‌های بدیهی، بیشتر آش می‌خوری! 😄
💬 به نظرم کلماتی مثل:


think, reasoning, like human, step by step, check it that be correct
می‌تونه اثر بخشی پرامپت رو بیشتر کنه.

#مهندسی_پرامپت
#قسمت_اول
#LLM
🌟🧠
چندتا دوره از Nvidia منتشر شده (خودم ندیدم که بگم عالیه و حتما ببنین اما بالاخره شرکت بزرگ پشتش هست)

1- Generative Ai

Learning Objectives
Upon completion, you will have a basic understanding of Generative AI and be able to more effectively use the various tools built on this technology.

Topics Covered
This no coding course provides an overview of Generative AI concepts and applications, as well as the challenges and opportunities in this exciting field.

Course Outline
Define Generative AI and explain how Generative AI works
Describe various Generative AI applications
Explain the challenges and opportunities in Generative AI

2- agumented your LLM with RAG

Learning Objectives
Understand the basics of Retrieval Augmented Generation.
Learn about the RAG retreival process
Learn about NVIDIA AI Foundations and the components that constitue a RAG model.

Topics Covered
Large Language Models (LLMs)
Retrieval Augmented Generation (RAG)

Course Outline
Retrieval-augmented Generation Explained, also called RAG
The RAG ingestion and retrieval processes
NVIDIA’s Canonical RAG model on NV AI Foundations
Summary of what we have learned

3- Building RAG agents with LLM

Learning Objectives
The goal of the course is to teach participants how to:

Compose an LLM system that can interact predictably with a user by leveraging internal and external reasoning components.
Design a dialog management and document reasoning system that maintains state and coerces information into structured formats.
Leverage embedding models for efficient similarity queries for content retrieval and dialog guardrailing.
Implement, modularize, and evaluate a RAG agent that can answer questions about the research papers in its dataset without any fine-tuning.
By the end of this workshop, participants will have a solid understanding of RAG agents and the tools necessary to develop their own LLM applications.

Topics Covered
The workshop includes topics such as LLM Inference Interfaces, Pipeline Design with LangChain, Gradio, and LangServe, Dialog Management with Running States, Working with Documents, Embeddings for Semantic Similarity and Guardrailing, and Vector Stores for RAG Agents. Each of these sections is designed to equip participants with the knowledge and skills necessary to develop and deploy advanced LLM systems effectively.

Course Outline
Introduction to the workshop and setting up the environment.
Exploration of LLM inference interfaces and microservices.
Designing LLM pipelines using LangChain, Gradio, and LangServe.
Managing dialog states and integrating knowledge extraction.
Strategies for working with long-form documents.
Utilizing embeddings for semantic similarity and guardrailing.
Implementing vector stores for efficient document retrieval.
Evaluation, assessment, and certification.
📊✍️
مهندسی پرامپت: قسمت دوم
🚀🎯

🔄 One-shot and Few-shot Prompting:
یکی از روش‌های کنترل و بهبود ساختار خروجی مدل، استفاده از مثال است. به این تکنیک در ادبیات، one-shot و few-shot prompting می‌گویند.

📌 فرض کنید:
می‌خواهید مطلبی بنویسید و از سبکی که دیده‌اید و خوشتان آمده، استفاده کنید. برای این کار:
1️⃣ ابتدا نقش و ساختار پرامپت را مشخص کنید.
2️⃣ نمونه یا نمونه‌های دلخواه خود را در پرامپت قرار دهید.
3️⃣ از مدل بخواهید مطابق با آن پاسخ دهد.

😁 (چون خیلی آسونه، مثال نمی‌زنیم!)


🔍 Reverse Prompt Engineering:
💡 در این تکنیک، به جای نوشتن پرامپت برای تولید یک متن، از یک متن موجود شروع می‌کنیم تا به پرامپت مناسب برای تولید متون مشابه برسیم.

📌 کاربردها:


تولید متون مشابه تبلیغات موفق
ایجاد کد مشابه برای کاربردهای برنامه‌نویسی


📋 گام‌های Reverse Prompt Engineering:
1️⃣ تخصیص نقش و ساختار:

You are a prompt engineering pro for Large Language Models. Let's start with understanding Reverse Prompt Engineering. In this context, it means creating a prompt from a given text. You think through everything step by step because I give you 20 dollars. Please only reply with 'ok'.


🟢 جواب مدل فقط: OK

2️⃣ توضیح با مثال:

You are an expert in Reverse Prompt Engineering. Can you provide me with a simple example of this method?


🔸 در این گام:


اطمینان حاصل می‌شود که مدل متوجه شده است.
یک مثال توسط مدل ارائه می‌شود که در کانتکست بعدی مفید است.

3️⃣ ایجاد قالب:

I would like you to create a technical template for Reverse Prompt Engineering. Do not hesitate to ask questions if you need more context.


🔸 این گام اختیاری است اما می‌تواند به تولید یک قالب فنی برای گام بعدی کمک کند.

4️⃣ درخواست نهایی:

I would ask you to apply Reverse Prompt Engineering to the following [your text]. Make sure to capture the writing style, content, meaning, language, and overall feel of the text in the prompt you create.


🌟 نتیجه:
می‌توانید درخواست خود را بر اساس نیازتان شخصی‌سازی کنید یا جزئیات بیشتری از مدل بخواهید.


🎯 تکنیک آخر:
🧠 فرض کنید برای موضوعی (مثلاً برنامه ورزشی) از مدل کمک می‌خواهید.
🔸 ترفند:
به مدل بگویید:


ابتدا 10 سؤال مهم بپرس که به پاسخ‌دهی بهتر کمک کند.
سپس با توجه به پاسخ‌های من، جواب سؤال اصلی را بده.

📌 مزیت:
جواب‌ها دقیق‌تر، شخصی‌سازی‌شده و کمتر کلی خواهند بود.


مبنای دو تکنیک قبلی:
مدل با استفاده از context موجود در chat history می‌تواند جواب‌های دقیق‌تری تولید کند.

#مهندسی_پرامپت
#LLM
#قسمت_دوم
🌟🧠
بچه‌ها اگه می‌خواید یه مدرک رایگان راجع به Generative AI و LLM Agents از دانشگاه Berkeley بگیرید این دوره‌ای که دارن برگزار می‌کنن رو شرکت کنید. فیلماش ضبط میشه رو یوتیوب می‌ذارن.واسه هر جلسه یه آزمون داره، همه‌رو تموم کنید مدرکش رو میدن بهتون.
https://llmagents-learning.org/f24

#LLM
خلاصه دو قسمت قبلی مهندسی پرامپت به طور کلی در این تصویر خلاصه میشه
#LLM
The Debugging Diaries
خلاصه دو قسمت قبلی مهندسی پرامپت به طور کلی در این تصویر خلاصه میشه #LLM
اما یه تکنیک دیگه(شاید آخریش) در مباحث ابتدایی مهندسی پرامپت اصطلاحا Priming Chatbots
یا آماده سازی چت بات هستش به این صورت که قبل از شروع چت نقش و کارهایی که باید بکنه بهش میگی به نظرم خودم این روش برای آموزش و یادگیری از LLM می تونه کاربردی باشه که در ادامه با چند مثال مسئله روشن تر میشه
user :
Please act as a writing assistant. Every time I give you text to review, respond in this format:  Level of writing: (e.g. high school, college)  Well written: (yes, no, or somewhat)  Writing advice: Free-form advice on the writing  If you understand, just say "YES".


همون ابتدای کار داره تکلیف LLM در این چت رو مشخص میکنه میگه کارت همینه
LLM:
YES

user:
The Industrial Revolution, which took place from the 18th to 19th centuries, was a period during which predominantly agrarian, rural societies in Europe and America became industrial and urban. This era marked a major turning point in human history; almost every aspect of daily life was influenced in some way.  Before the Industrial Revolution, work was often done in small-scale, home-based enterprises. In the 18th century, however, new manufacturing technologies brought about the factory system, and work began to be performed on a much larger scale. Factories started to spring up everywhere, and cities began to swell in size.

و در جواب
Level of writing: High school
Well written: Yes Writing advice: This is a good introduction to the topic of the Industrial Revolution. It provides a clear and concise overview of the main points. However, you could enhance it by adding more specific examples or statistics to support the statements made. Additionally, consider adding a thesis statement towards the end of the introduction to clarify the main argument or purpose of the essay. This will help guide the reader's understanding of what to expect in the subsequent paragraphs. Overall, it's a good start, and you can build on it to make it even stronger.


این مثال زیاد دوست نداشتم، مثال بعدی مثال بهتری هست
User:
I would like you to act as my math tutor. When I give you a problem, give me advice on the next step I should try. If I ever ask for the answer, say "Sorry, I can't give you an answer". If you understand, say YES.

LLM:
Yes, I understand. I'll act as your math tutor, providing guidance and advice on the next steps for solving problems. If you ask for the answer, I'll politely decline. Please feel free to ask your math questions, and I'll do my best to help you!

User :
I am trying to find the x intercepts of x^2 + 2x + 4. Can you just tell me what they are?

LLM:
Sorry, I can't give you the answer directly. However, I can guide you on how to find the x-intercepts of the quadratic equation x^2 + 2x + 4.  To find the x-intercepts, you need to set the equation equal to zero and solve for x:  Set the equation equal to zero: x^2 + 2x + 4 = 0
Try to factor the quadratic equation. Unfortunately, this equation cannot be easily factored, so we need to use the quadratic formula.
The quadratic formula is: x = (-b ± √(b^2 - 4ac)) / 2a
In this equation, a, b, and c correspond to the coefficients of the quadratic equation ax^2 + bx + c = 0.
For the equation x^2 + 2x + 4, a = 1, b = 2, and c = 4. Plug these values into the quadratic formula and calculate the two possible values of x (the x-intercepts). Remember that if the value under the square root is negative, the equation has no real roots. Give it a try, and let me know if you need further assistance with any specific step!



جای معلم ریاضی میتونه هر چیز دیگه باشه و جای اینکه مسئله شما مطرح کنین میتوانین ازش یه طرح درس بخواین که آخرش یه سوال مطرح کنه که شما جواب بدین و اون راهنماییتون کنه و بعد برین سراغ درس بعدی

البته حواستتون به context length مدل باشه

از این پست به بعد میرم سراغ تکنیک های intermediate در مهندسی پرامپت

#مهندسی_پرامپت
#قسمت_سوم
#LLM
https://www.epsilon-ai.com/

یک دستیار هوش مصنوعی برای نوشتن مقالات و مرور ادبیات می باشد.
به نظرم از سایر چیزهایی که این چند وقت ازش استفاده کردم خیلی بهتر و دقیق تر عمل میکنه
طرز کارش هم اینجوری که شما مطلبی که میخوای بنویسی رو در قالب یک سوال مطرح میکنی
مثلا من پرسیدم که
what is meaning of feasibility and optimality robustness?
میاد مفاهیم با رفرنس توضیح میده و سپس مقالات مرتبط با سوالی که مطرح کرده صورت میکنه.
همینطوری که در تصویری مشاهده میکنید.
یه عملگر جالب تو sql هست به نام Cross apply قبلش به مقدمه
توی Sql کلا for , loop اینا نه بهینه است نه استفاده میشه باید نگاه و دید مجموعه داشت اما عملگر Cross apply مثل حلقه تو در تو روی دو تا جدول می مونه
اگه دو تا جدول داشته باشی و روش for بزنی کل مقادیر موجود در دو جدول رو کنار هم میتونی چاپ کنی در بعضی موارد هم میتونی یه شرطی بذاری و همه مقادیر چاپ نکنی و برخی از موارد دلخواه چاپ کنی
حالا با این مقدمه بریم سراغ cross apply
فرض کنیم یه جدول داریم که مشتری مشخصاتشون داخلش ثبت میشه
و یه جدول داریم سفارشات مشتری درش نگه می داریم
حالا میخوایم 3 تا سفارش آخر هر مشتری جلوی مشخصات مشتری داشته باشیم
فرض کنیم با زبون برنامه نویسی این کار میخوایم کنیم
یه حلقه میزنیم روی جدول مشتریا تک به تک مشتریا رو میریم داخل جدول سفارشا پیدا کرده و سه تای آخر بر میگردونیم
با cross apply هم به شکل زیر میشه
SELECT 
c.CustomerID,
o.OrderID,
o.OrderDate,
o.TotalAmount
FROM
Customer c
CROSS APPLY
(
SELECT TOP 3
OrderID,
OrderDate,
TotalAmount
FROM
Orders o
WHERE
o.CustomerID = c.CustomerID
ORDER BY
o.OrderDate DESC
) o
ORDER BY
c.CustomerID, o.OrderDate DESC;

در اینجا هم مواردی که از جدول مشتری انتخاب میکنی مثل یه حلقه دونه به دونه به Select دوم میره و توی شرط سفارش هایی نشون بده که آیدی مشتری i است و سپس سه تای برتر شو رو با استفاده از top و order by برمیگردونه
#sql
#part_1