۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

۶ پروژه مولد AI Python برای اجرا در حال حاضر

با این پروژه های کدنویسی مبتنی بر پایتون با استفاده از OpenAI، LangChain، Matplotlib، SQLAlchemy، Gradio، Streamlit و موارد دیگر، به طور عملی هوش مصنوعی مولد را معرفی کنید.

با این پروژه های کدنویسی مبتنی بر پایتون با استفاده از OpenAI، LangChain، Matplotlib، SQLAlchemy، Gradio، Streamlit و موارد دیگر، به طور عملی هوش مصنوعی مولد را معرفی کنید.

مطمئناً، وب‌سایت‌های مبتنی بر LLM وجود دارند که می‌توانید برای چت‌بات‌ها، جستجوی یک سند یا تبدیل متن به SQL استفاده کنید. اما هیچ چیز مانند دسترسی به کد زیرین وجود ندارد. در کنار رضایت از راه‌اندازی و اجرا کردن یک برنامه، کار مستقیم با فایل‌های Python به شما این فرصت را می‌دهد که نحوه ظاهر و کارکرد همه چیز را تغییر دهید.

در اینجا شش پروژه کدنویسی وجود دارد تا شما را با هوش مصنوعی مولد در پایتون شروع کنید.

یک ربات چت با Llama 2، Streamlit و Replicate بسازید

اگر می‌خواهید ربات چت خود را با چیزی غیر از GPT-3.5 یا GPT-4 OpenAI اجرا کنید، یکی از گزینه‌های آسان، اجرای مدل Llama 2 متا در چارچوب وب Streamlit است. Chanin Nantasenamat، مدافع ارشد توسعه دهندگان در Streamlit، یک مخزن GitHub، ویدیوی یوتیوب و پست وبلاگ را به شما نشان دهیم.

شما به یک حساب تکرار و رمز API نیاز دارید. می‌توانید با ورود به سیستم شروع کنید با یک حساب GitHub. استفاده از نور گاه به گاه در Replicate نیازی به کارت اعتباری یا پرداخت ندارد. اگر قصد دارید از مدل‌های بزرگ‌تر استفاده کنید یا درخواست‌های زیادی داشته باشید، باید شروع به پرداخت کنید.

حساب Replicate رایگان شما باید دارای یک نشانه API پیش‌فرض باشد یا می‌توانید یک نشانه جدید ایجاد کنید.

پروژه را راه اندازی کنید

برای شروع، کد را به صورت محلی با استفاده از Git دانلود کردم:


git clone https://github.com/dataprofessor/llama2.git

اگر از Git استفاده نمی‌کنید، می‌توانید به https://بروید github.com/dataprofessor/llama2، روی منوی کشویی Code کلیک کنید، Download ZIP را انتخاب کنید و فایل‌ها را در دستگاه محلی خود از حالت فشرده خارج کنید.

بعد، پس از تنظیم دایرکتوری کاری خود در پوشه پروژه، یک محیط مجازی پایتون با venv ایجاد کردم (شما می توانید از هر ابزار محیط مجازی که دوست دارید استفاده کنید):


python -m venv env

من محیط را با

فعال کردم


source env/bin/activate

این فرمان در مک من است. در ویندوز، env\Scripts\activate خواهد بود.

بعد، بسته های مورد نیاز خود را با

نصب کردم


pip install -r requirements.txt

برای اجرای یک فایل Streamlit به صورت محلی با استفاده از کلیدهای API، مستندات توصیه می‌کنند که آنها را در یک فایل secrets.toml در پوشه .streamlit در زیر فهرست اصلی پروژه خود ذخیره کنید. . اگر از git استفاده می‌کنید، حتماً .streamlit/secrets.toml را به فایل .gitignore خود اضافه کنید.

فایل secrets.toml باید قالبی مانند این داشته باشد:


REPLICATE_API_TOKEN = "your_replicate_token"

اگر کاربران از رمز شما برای درخواست استفاده کنند کار می کند. ممکن است بخواهید برنامه را به صورت محلی اجرا کنید تا ببینید اگر کاربران مجبور شوند کلید خود را وارد کنند چه اتفاقی می‌افتد. برنامه در مک من بدون secrets.toml اجرا نشد. برای دور زدن این موضوع، من به سادگی موارد زیر را به secrets.toml اضافه کردم و مقدار REPLICATE_API_TOKEN را تنظیم نکردم:


FAKE_TOKEN = "some fake token"

اکنون باید بتوانید برنامه Streamlit را به صورت محلی با دستور ترمینال اجرا کنید


streamlit run streamlit_app_v2.py

به گزینه های سمت چپ توجه کنید که به شما امکان می دهد پارامترهای مدل مختلف را تنظیم کنید. من پیشنهاد می کنم طول خروجی را از پیش فرض افزایش دهید. اگر این کار را انجام ندهید، احتمالاً قبل از دریافت معنای پاسخ، پاسخ شما در میان جریان قطع خواهد شد.

ربات گفتگو با سوال چگونه یک فایل Secrets.toml را به برنامه Streamlit اضافه می کنید؟

Chatbot با اجرای Streamlit Llama 2 ایجاد شد.

اگر می خواهید برنامه را به گونه ای اجرا کنید که در وب در دسترس باشد، یکی از ساده ترین راه ها ایجاد یک حساب کاربری رایگان در اجرای ابر جامعه. برنامه ها را می توان مستقیماً از حساب GitHub شما در آنجا مستقر کرد. از دستورالعمل‌های راه‌اندازی و استقرار. p>

مگر اینکه با خصوصی کردن مخزن GitHub خود، برنامه را خصوصی کرده باشید—بنابراین هر حساب یک برنامه خصوصی دریافت می کند— باید از کاربران بخواهید کلید API خود را ارائه دهند. در غیر این صورت، می توانید یک صورتحساب قابل توجه Replicate API را اجرا کنید.

یک گزینه نسبتاً ساده دیگر برای اشتراک‌گذاری برنامه‌های Streamlit، استقرار در فضای Streamlit Hugging Face< /a>. اگر کاربر داکر هستید، می‌توانید از این ابزار استفاده کنید برایان هس در Snowflake برای Dockerize کردن برنامه های Streamlit شما.

داده های خود را با استفاده از Matplotlib، Streamlit و OpenAI تجسم کنید

این برنامه به شما امکان می‌دهد یک فایل CSV آپلود کنید، یک سوال بپرسید و در ازای آن یک نمودار تولید شده توسط Matplotlib دریافت کنید. به یک کلید OpenAI نیاز دارد که می‌توانید در https://platform.openai.com< ثبت نام کنید. /a>.

Git مخزن را با

شبیه سازی کنید

git clone https://github.com/michaelweiss/chat-with-your-data.git

سپس به دایرکتوری پروژه تغییر دهید و یک محیط مجازی پایتون ایجاد و فعال کنید، درست مانند آنچه در راه اندازی پروژه قبلی انجام دادیم.

اگر برنامه را به صورت محلی اجرا می کنید، کلید OpenAI خود را با دستور ترمینال تنظیم کنید

export OPENAI_API_KEY="your_open_ai_key"

بعد، بسته‌های مورد نیاز را نصب کنید (من متوجه شدم که این قسمت در README پروژه در زمان نوشتن این مقاله):

pip install openai pandas streamlit matplotlib

اکنون برنامه را با

اجرا کنید

streamlit run chat_data.py

نمودار میله ای در پاسخ به من نشان می دهد 5 ایالت با بیشترین درصد افزایش جمعیت 2010-20

گرافی که توسط برنامه مبتنی بر Chat With Your Data LLM ایجاد شده است.

اگر LLM بتواند کد پایتون قابل استفاده را از پرس و جو شما تولید کند، باید یک نمودار در پاسخ مشاهده کنید. مانند همه برنامه‌های کاربردی LLM، گاهی اوقات باید سؤال خود را تغییر دهید تا کد به درستی کار کند.

یک چیزی که در مورد این برنامه دوست دارم این است که کد پایتون خواندن و درک آسان است. و چون نویسنده مایکل وایس مخزن را تحت مجوز مجاز MIT منبع باز، شما آزاد هستید که از آن برای هر هدفی استفاده کرده و آن را تغییر دهید.

یک سند متنی را با OpenAI، LangChain و Chainlit پرس و جو کنید

این پروژه یک برنامه کاربردی ساده ایجاد می کند که در آن می توانید یک سند .txt را آپلود کنید و در مورد محتوای آن سؤال بپرسید. فایل ذخیره نشده است، بنابراین اگر به تازگی سندی را دریافت کرده باشید و بخواهید خلاصه ای از آن را دریافت کنید یا چند سوال اولیه بپرسید، یا اگر می خواهید این قابلیت را به کاربران دیگر ارائه دهید، بسیار مفید خواهد بود. این برنامه از Chainlit استفاده می کند، یک چارچوب نسبتاً جدید که به طور خاص برای LLM طراحی شده است. -برنامه‌های چت قدرتمند.

هر بار که سندی را در برنامه آپلود می‌کنید، آن سند توسط یک LLM برای ایجاد جاسازی‌های متنی پردازش می‌شود، که سند را به رشته‌ای از اعداد تبدیل می‌کند که هدف آن نمایش “معنا” آن است. اگر می خواهید در آینده چندین بار از این فایل پرس و جو کنید، مانند اسناد نرم افزاری، آپلود آن و ایجاد جاسازی در هر بار کارایی زیادی ندارد. برای آن سناریو، پروژه را در بخش بعدی بررسی کنید، که فایل‌ها و جاسازی‌های آن‌ها را برای استفاده در آینده ذخیره می‌کند.

برای اجرای این پروژه، یک بار دیگر یک محیط مجازی پایتون ایجاد و فعال خواهید کرد. مگر اینکه کد را برای استفاده از LLM دیگری تغییر دهید، به یک کلید OpenAI API نیاز دارید.

بعد، بسته‌های مورد نیاز را نصب کنید:

pip install python-dotenv langchain chromadb tiktoken chainlit openai

کد نمونه Chainlit را در https://docs.chainlit.io/examples کپی کنید /qa.

در بالای فایل، تغییر دهید

os.environ["OPENAI_API_KEY"] = "OPENAI_API_KEY"

به کلید OpenAI شما. (یا آن کد را با روش ایمن‌تر دیگری برای بارگیری کلید خود به‌روزرسانی کنید، مانند استفاده از کتابخانه python-dotenv و فایل .env.)

Chainlit با برخی از عملکردهای خاص از جعبه ارائه می شود. برنامه وب پیش‌فرض مراحلی را که LLM برای پاسخ به سؤال کاربر انجام می‌دهد و همچنین پاسخ نهایی را نمایش می‌دهد (در صورت تمایل می‌توانید نمایش پیش‌فرض را خاموش کنید). Chainlit همچنین دارای دکوراتورهای متمرکز بر چت بات است. دکوراتور @cl.on_message برای مشخص کردن هر چیزی است که باید هنگام وارد کردن سوال توسط کاربر اجرا شود و @cl.on_chat_start برای هر کدی است که باید هنگام شروع برنامه اجرا شود. بالا (توجه داشته باشید که برای استفاده از @cl.on_message باید chainlit را به عنوان cl وارد کنید.)

می توانید برنامه را با دستور ترمینال اجرا کنید


chainlit run -w qa.py

برنامه باید در یک مرورگر در لوکال هاست باز شود. آرگومان -w هر بار که فایل اصلی app.py به‌روزرسانی و ذخیره می‌شود، برنامه را به‌طور خودکار بارگیری می‌کند.

Chainlit یک فایل chainlit.md جدید را در دایرکتوری پروژه شما هنگامی که برنامه را اجرا می کنید در صورتی که قبلاً وجود نداشته باشد ایجاد می کند. این فایل همان چیزی است که در برگه Readme برنامه شما نشان داده می شود. شما می توانید آن را به دلخواه ویرایش کنید.

این برنامه همچنین دارای پیوندهایی به تکه‌های سند منبع مربوطه در پاسخ LLM است، بنابراین می‌توانید نسخه اصلی را بررسی کنید تا ببینید آیا پاسخ صحیح است یا خیر.

برنامه با نور زنجیره ای در پاسخ به

برنامه Chainlit برای درخواست یک سند.

اگر با LangChain آشنایی دارید، می‌توانید کد برنامه را به‌روزرسانی کنید تا گزینه‌های نوع فایل بیشتری را با استفاده از لودرهای سند LangChain، مانند PDF یا UnstructuredFileLoader طراحی شده برای مدیریت چندین نوع فایل.

من هنوز Chainlit را برای برنامه های تولید خارجی که به شدت مورد استفاده قرار می گیرند پیشنهاد نمی کنم، زیرا هنوز تا حدودی جدید است. اما اگر نیازی به سفارشی‌سازی زیادی ندارید و فقط می‌خواهید یک راه سریع برای کدنویسی رابط چت اولیه داشته باشید، این گزینه جالبی است. مخزن کتاب آشپزی Chainlit چندین برنامه کاربردی دیگر دارد که می توانید علاوه بر این یکی امتحان کنید .

مستندات وب‌سایت Chainlit می‌گوید که یک سرویس ابری برای اشتراک‌گذاری برنامه‌های Chainlit به زودی ارائه می‌شود. در حال حاضر، توصیه‌های رسمی استقرار به چند روش محدود است، از جمله پیوندهایی به مقالات درباره Fly.io، Google Cloud Run، Docker در Google App Engine و Replit. من همچنین توضیح دهندگانی را در مورد اجرای برنامه های Dockerized Chainlit در Hugging Face Spaces دیده ام. می‌توانید جزئیات را در Beyond-ChatGPT GitHub مخزن پیدا کنید. و در فراتر از ChatGPT: اولین برنامه LLM خود را بسازید ویدیوی YouTube.

پرس و جو از مجموعه ای از اسناد ذخیره شده با LangChain، OpenAI، و Gradio

این برنامه به شما امکان می‌دهد چندین سند را پردازش و ذخیره کنید تا یک LLM بتواند به سؤالات کاربر فقط بر اساس آن فایل‌ها پاسخ دهد – چیزی که در این زمینه به‌عنوان RAG یا تولید افزوده شده با بازیابی شناخته می‌شود. این شامل یک رابط چت بات است.

کد از GitHub خالق LangChain هریسون چیس می‌آید و به‌طور پیش‌فرض از یک فایل متنی همراه با سخنرانی سال ۲۰۲۲ ایالات متحده درخواست می‌کند.

برای شروع، کد را از https:// شبیه سازی یا دانلود کنید github.com/hwchase17/chat-your-data، محیط مجازی پایتون خود را همانطور که در بخش های قبلی نشان داده شده است راه اندازی کنید، سپس مراحل راه اندازی ۰، ۱، و ۲ را در README فایل.

پس باید بتوانید برنامه وب Gradio را به صورت محلی، با متن پیش فرض، با اجرا اجرا کنید


python app.py

و باز کردن یک مرورگر در URL مشخص شده. همچنان باید در کلید OpenAI خود جایگذاری کنید (مقدار صادر شده برای استفاده از خط فرمان است).

Gradio یک چارچوب وب است که برای علم داده طراحی شده است و شامل عملکرد داخلی برای پخش جریانی چت ربات است. این توازن خوبی از سهولت استفاده و سفارشی‌سازی را ارائه می‌دهد، و مستندات بسیار گسترده و قابل پیگیری است.

علاوه بر رابط کاربری Gradio، این برنامه همچنین دارای یک برنامه خط فرمان برای جستجوی سند است، اگر ترجیح می دهید برنامه را به جای مرورگر در پنجره ترمینال اجرا کنید:


python cli_app.py

وقتی برنامه پیش‌فرض را اجرا کردید، گام بعدی این است که آن را با اسناد دلخواه خود سفارشی کنید. یکی از راه‌های انجام این کار، انجام تغییرات زیر است:

۱. فایل های vectorstore.pkl و state_of_the_union.txt را حذف کنید.

۲. یک پوشه Docs ایجاد کنید و یک یا چند مورد از اسنادی را که می خواهید پرس و جو کنید در آن قرار دهید. من این را با فایل‌های PDF امتحان کردم هشت نکته که باید در مورد مدل‌های زبان بزرگ بدانید< /a> توسط ساموئل بومن  و راهنمای مبتدیان انویدیا مدل های زبان بزرگ.

۳. در ingest_data_.py، خطوط زیر را تغییر دهید (خطوط ۹ و ۱۰، درست پس از print("بارگیری داده ها...")):


loader = UnstructuredFileLoader("state_of_the_union.txt")
raw_documents = loader.load()

به


raw_documents = []
for file in os.listdir('docs'):
    if file.endswith('.pdf'):
        pdf_path = './docs/' + file
        loader = PyPDFLoader(pdf_path)
        raw_documents.extend(loader.load())
    elif file.endswith('.docx') or file.endswith('.doc'):
        doc_path = './docs/' + file
        loader = Docx2txtLoader(doc_path)
        raw_documents.extend(loader.load())
    elif file.endswith('.txt'):
        doc_path = './docs/' + file
        loader = TextLoader(doc_path)
        raw_documents.extend(loader.load())

همچنین موارد زیر را به بالای فایل اضافه کنید:


import os
from langchain.document_loaders import PyPDFLoader, Docx2txtLoader
from langchain.document_loaders import TextLoader

۴. در query_data.py، عبارت “آخرین وضعیت آدرس اتحادیه” یا “آخرین وضعیت اتحادیه” را به هر موضوعی که اسناد شما پوشش می دهد تغییر دهید. چهار مورد از یکی از آن عبارات وجود دارد.

۵. در app.py، عنوان را در خط ۵۷

تغییر دهید


"<h3><center>Chat-Your-Data (State-of-the-Union)</center></h3>"

به چیزی مناسب برای برنامه شما. همچنین متن جای‌بان را در خط ۷۱ و نمونه‌های شروع شده در خط ۷۸ را تغییر دهید.

اگر از فایل‌های PDF نیز استفاده می‌کنید، باید کتابخانه pypdf را نصب کنید:


pip install pypdf

اکنون python ingest_data.py را دوباره اجرا کنید و سپس برنامه را با python app.py اجرا کنید.

واسط چت جدید Gradio

این برنامه از رابط چت جدید Gradio که پاسخ های جریانی را با کد بسیار کم ارائه می دهد، استفاده نمی کند. برای اطلاعات بیشتر در مورد جدید، ایجاد یک ربات چت سریع را در اسناد Gradio بررسی کنید. قابلیت ها.

برای مثال، این کد نمونه از Gradio آمده است مستندات و یک برنامه چت بات اصلی است که مستقیماً از API OpenAI استفاده می کند:


import openai
import gradio as gr

# Replace with your key
openai.api_key = "sk-your-openai-api-key"

def predict(message, history):
    history_openai_format = []
    for human, assistant in history:
        history_openai_format.append({"role": "user", "content": human})
        history_openai_format.append(
            {"role": "assistant", "content": assistant})
    history_openai_format.append({"role": "user", "content": message})

    response = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=history_openai_format,
        temperature=1.0,
        stream=True
    )

    partial_message = ""
    for chunk in response:
        if len(chunk['choices'][0]['delta']) != 0:
            partial_message = partial_message + \
                chunk['choices'][0]['delta']['content']
            yield partial_message

gr.ChatInterface(predict).queue().launch()

می توانید مدل OpenAI را به gpt-4 تغییر دهید و بدون اشتراک ۲۰ دلاری در ماه، به API پرداخت به ازای استفاده به GPT-4 دسترسی داشته باشید. اسناد Gradio همچنین شامل کد یک ربات چت عمومی است که از LLM محلی به جای مدل های OpenAI استفاده می کند.

استقرار برنامه Gradio

بسیار آسان است یک برنامه گرادیو را در Hugging Face Spaces مستقر کنید. احتمالاً نمی‌خواهید برنامه‌ای با کلید API شما در یک سایت عمومی برای کسی استفاده کند. یک راه حل این است که حفاظت از رمز عبور اولیه را اضافه کنید که می توانید با جایگزین کردن کد زیر

انجام دهید

gr.ChatInterface(predict).queue().launch()

با این

gr.ChatInterface(predict).queue().launch(auth=("theUserName", "thePassword"))

اگر نمی‌خواهید برنامه‌تان دارای علامت تجاری Hugging Face باشد، گزینه‌های دیگری برای استقرار وجود دارد، مانند اجرای برنامه در یک ظرف Docker در یک سرویس ابری.

تحقیق وب مبتنی بر LLM با LangChain، OpenAI، و FastAPI

پروژه پژوهشگر GPT توسط اساف الویچ، رئیس بخش تحقیق و توسعه در Wix در تل‌آویو، دستورالعمل‌های نصب گام به گام خوبی را در پرونده README. همچنین یک howtower-tonk-” relllow=”noopener_blank” وجود دارد نصب ویدیو. مقدمه نصب را نادیده نگیرید، جایی که می‌گوید باید پایتون نسخه ۳.۱۱ یا بالاتر را روی سیستم خود نصب کنید.

اگر نسخه‌های دیگری از پایتون نیز دارید، مطمئن شوید که محیط مجازی خود را با نسخه صحیح پایتون ایجاد کرده‌اید، سپس آن را فعال کنید.

بسته های مورد نیاز را با

نصب کنید

pip install -r requirements.txt

یک فایل .env ایجاد کنید و کلید OpenAI API خود را به عنوان

اضافه کنید

OPENAI_API_KEY="your-key-here"

این پروژه از موتور جستجوی Tavily استفاده می کند که برای پروژه های LLM طراحی شده است. در حال حاضر رایگان است، اما توجه داشته باشید که سوالات ورودی، همانطور که وب سایت توضیح می دهد، “برای یادگیری و بهبود الگوریتم ها و مدل های ما” استفاده خواهد شد. من خواندم که به این معنی است که از پرس و جوها برای کمک به آموزش مدل های آن استفاده می شود، بنابراین آنها را مطابق با آن وارد کنید.

برنامه را با

اجرا کنید

uvicorn main:app --reload

و در یک مرورگر به http://localhost:8000 بروید، جایی که صفحه باز را در اینجا خواهید دید:

باز کردن صفحه برای محقق GPT.

هنگامی که روی “شروع به کار” کلیک کنید و یک پرس و جو وارد کنید، یک نماینده چندین منبع را جستجو می کند. تهیه گزارش کمی زمان می برد. این بدان معناست که ممکن است در تماس‌های LLM کمی گران‌تر از سایر گزینه‌ها باشد، اگرچه مزیت آن این است که گزارش خود را در قالب گزارش با پیوندهایی به منابع برمی‌گردانید.

من سعی کردم از آن بپرسم چگونه می توان از حمله یک دارکوب به چوب خانه ما جلوگیری کرد – که متأسفانه یک سؤال نظری نیست. این چیزی است که برگشت:

صفحه نمایش برنامه که آماده می شود برای تحقیق درباره سوال دارکوب

محقق GPT در میان پاسخ دادن به یک سؤال.

نتیجه شامل یک چکیده، مقدمه، چندین بخش (“روش های بازدارنده غیر مضر” و “اقدامات پیشگیرانه برای جلوگیری از نوک زدن”) و همچنین نتیجه گیری و منابع بود.

گزینه کپی به کلیپ بورد به طور عجیبی در مک من هنگام ایجاد گزارش کار نمی کرد، اگرچه می توانستم آن را به صورت PDF دانلود کنم (یا به روش قدیمی انتخاب و کپی کنم).

اطلاعات موجود در این گزارش خاص مشابه اطلاعاتی بود که ممکن است از سایتی مانند Phind دریافت کنم. com، هر چند در قالب رسمی تر و شاید نظر بیشتری در مورد منابع. همچنین، علاوه بر یک گزارش تحقیقی که به این سوال پاسخ می‌دهد، می‌توانید یک «گزارش منبع» بخواهید، و این گزارش مقدار مناسبی از مشخصات هر یک از منابع برتر آن را برمی‌گرداند.

می‌توانید LLM مورد استفاده توسط GPT Researcher را تغییر دهید، اگرچه توصیه نمی‌شود. مدل OpenAI در حال حاضر برای این کار مناسب ترین در نظر گرفته می شود.

علاوه بر اجرای GPT Researcher به صورت محلی، این پروژه شامل دستورالعمل‌هایی برای اجرای آن در ظرف Docker.

تبدیل زبان طبیعی به SQL با LlamaIndex، SQLAlchemy، و OpenAI

راه‌های مختلفی برای تبدیل متن به SQL وجود دارد—در واقع، من درباره مفهوم کلی استفاده از موتور جستجوی R و SQL نوشته‌ام. با این حال، من می خواستم پروژه نمونه Llamaindex را با استفاده از SQLalchemy امتحان کنم. LlamaIndex برای ارائه “ابزارهایی برای تقویت برنامه های کاربردی LLM با داده” طراحی شده است، که یکی از کارهای مولد هوش مصنوعی است که بیشتر مورد علاقه من است. SQLAlchemy یک جعبه ابزار پایگاه داده پایتون است.

این پروژه شامل صفحه وب نیست و از خط فرمان اجرا می شود. برای پایتون، من بیشتر از کد نمونه دفترچه یادداشت Llamaindex.

تنظیم پروژه

مانند پروژه های قبلی، ابتدا یک فهرست پروژه جدید ایجاد کردم، دایرکتوری کاری خود را به فهرست پروژه تغییر دادم، یک محیط مجازی پایتون ایجاد و فعال کردم و سپس بسته های لازم را نصب کردم. در این مورد، کد نصب این بود:


pip install openai sqlalchemy llama-index

اگر نمی‌خواهید از OpenAI استفاده کنید، LlamaIndex گزینه های دیگر LLM API. یا، می‌توانید با استفاده از دستورالعمل های تنظیم محلی LLM ارائه شده.

نمونه نوت بوک کلید OpenAI API شما را به صراحت در فایل اصلی ذخیره می کند، که ممکن است نخواهید این کار را به عنوان بخشی از یک مخزن git انجام دهید، جایی که ممکن است در نهایت کلید خود را در GitHub به اشتراک بگذارید. در عوض، می‌توانید pip python-dotenv را نصب کنید:


pip install python-dotenv

و یک فایل .env با

ایجاد کنید


OPENAI_API_KEY="my_api_key"

سپس، موارد زیر را به یک اسکریپت جدید  app.py اضافه کنید:


import os
import openai
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

بعد، مقداری از کد نمونه را برش دادم و در یک اسکریپت app.py قرار دادم:


from llama_index.indices.struct_store.sql_query import NLSQLTableQueryEngine
from sqlalchemy import text
from sqlalchemy import insert
from llama_index.llms import OpenAI
from llama_index import SQLDatabase, ServiceContext
from sqlalchemy import (
    create_engine,
    MetaData,
    Table,
    Column,
    String,
    Integer,
    select,
) 
# Create a sample database and table
engine = create_engine("sqlite:///:memory:")
metadata_obj = MetaData()
table_name = "city_stats"
city_stats_table = Table(
    table_name,
    metadata_obj,
    Column("city_name", String(16), primary_key=True),
    Column("population", Integer),
    Column("country", String(16), nullable=False),
)
metadata_obj.create_all(engine)
# Set up an LLM
llm = OpenAI(temperature=0.1, model="gpt-3.5-turbo")
service_context = ServiceContext.from_defaults(llm=llm)
# Create a database object from that table that sqlalchemy can use
sql_database = SQLDatabase(engine, include_tables=["city_stats"])
# Add some sample data to the table
sql_database = SQLDatabase(engine, include_tables=["city_stats"])
rows = [
    {"city_name": "Toronto", "population": 2930000, "country": "Canada"},
    {"city_name": "Tokyo", "population": 13960000, "country": "Japan"},
    {"city_name": "Chicago", "population": 2679000, "country": "United States"},
    {"city_name": "Seoul", "population": 9776000, "country": "South Korea"},
]
for row in rows:
    stmt = insert(city_stats_table).values(**row)
    with engine.begin() as connection:
        cursor = connection.execute(stmt)
# Check to see if the table exists and is usable
stmt = select(
    city_stats_table.c.city_name,
    city_stats_table.c.population,
    city_stats_table.c.country,
).select_from(city_stats_table)
with engine.connect() as connection:
    results = connection.execute(stmt).fetchall()
    print(results)
# Try running a basic SQL query on this table  using sqlalchemy
with engine.connect() as con:
    rows = con.execute(text("SELECT city_name, country from city_stats"))
    for row in rows:
        print(row)
# At last! Time to try a natural language query
query_engine = NLSQLTableQueryEngine(
    sql_database=sql_database,
    tables=["city_stats"],
)
query_str = "Which city has the largest population, and what is that population??"
response = query_engine.query(query_str)
print(f"Answer: {response}")
# You can also see the query in the sqlalchemy metadata
print("Generated from the following SQL:")
print(response.metadata["sql_query"])

می‌توانید برنامه را با یک فرمان پایانی ساده python app.py پس از تنظیم پرس و جو و داده‌ها بر اساس نیاز خود اجرا کنید.

پروژه های بیشتر هوش مصنوعی مولد پایتون

اگر می‌خواهید پروژه‌های هوش مصنوعی مولد پایتون بیشتری پیدا کنید، در اینجا چند منبع آنلاین مفید وجود دارد.

Shiny for Python chatstream

اگر می‌خواهید یک رابط کاربری نسبتاً جدید پایتون را برای LLM امتحان کنید، Shiny را برای ماژول جریان گفتگوی پایتون بررسی کنید. همچنین هنوز در مراحل اولیه است، با مستندات هشدار داده شده “این کار بسیار در حال پیشرفت است، و API احتمالا تغییر خواهد کرد.” در حال حاضر، فقط با OpenAI API به طور مستقیم کار می کند.

مخزن GitHub دارای چندین نمونه از جمله چند قالب بندی و ذخیره است. دستور العمل ها از وبلاگ های آشپزی آنلاین. حتماً دستورالعمل‌های استفاده از مخزن را بخوانید.

پروژه های ساده

بخش هوش مصنوعی مولد در وب‌سایت Streamlit دارای چندین پروژه نمونه LLM است، شامل پرسش و پاسخ فایل با API Anthropic (در صورت دسترسی) و جستجو با LangChain.

همچنین می‌توانید پروژه‌های بیشتری را در وبلاگ Streamlit پیدا کنید، مانند نحوه ساختن یک برنامه بلادرنگ LLM بدون پایگاه داده برداری، چت با پانداها DataFrames با استفاده از LLM و ربات چت مفهومی خود را بسازید.

WASM Chatbot

ایده اجرای یک ربات چت مبتنی بر LLM به طور کامل در سمت مشتری در مرورگر به نظر دیوانه کننده است. اما اگر می‌خواهید آن را امتحان کنید، پست وبلاگ LangChain را بررسی کنید ساخت برنامه های وب مبتنی بر LLM با فناوری سمت مشتری. توجه داشته باشید که این نیاز به نصب محلی Ollama برای مدیریت یک LLM محلی دارد. این پروژه در حال حاضر فقط روی macOS یا Linux اجرا می‌شود.

پروژه های LangChain

سایت اصلی LangChain چندین ایده پروژه با کد در خود دارد. استفاده از بخش موارد، از جمله متن به SQL، خلاصه‌سازی و طبقه‌بندی متن، اگرچه برخی ممکن است برنامه‌های کامل شروع تا پایان نباشند.

علاوه بر این، می‌توانید کدی را ببینید که ربات چت LangChain را تامین می‌کند< /a>. فقط توجه داشته باشید که بدون تغییر، آن پروژه به یک حساب کاربری با Weaviate (حداقل ۲۵ دلار در ماه یا پایگاه داده های شما پس از ۱۴ روز ناپدید می شود) و همچنین نصب Next.js در قسمت جلویی نیاز دارد. اگرچه این برنامه خوبی است.

WebLangChain

گرافی که توسط برنامه مبتنی بر Chat With Your Data LLM ایجاد شده است.

یک برنامه پیچیده‌تر LangChain هوش مصنوعی را ارائه می‌کند جستجوی عمومی وب پیشرفته با قابلیت انتخاب هر دو مدل جستجوی API و LLM. کد در GitHub است.

پروژه های با نور زنجیره ای

اگر Chainlit علاقه شما را برانگیخت، چند پروژه دیگر با کد وجود دارد که می توانید به آن نگاه کنید. همچنین یک مخزن کتاب آشپزی GitHub با بیش از دوجین پروژه دیگر وجود دارد.

کد نویسی مبارک!