برنامه نویسی

آزمایش با MultiGents Ai – جامعه dev

پس از اتمام Challenge Ai Azure Foundry Agentic Ai Allession ، هدف آزمایش با چند سازمانی بود. با استفاده از لاجورد و هسته معنایی چیزهای زیادی برای جذب مواد در ساختمان و ارکستر وجود داشت. بنابراین تصمیم گرفتیم با استفاده از یک مدل تکمیل گپ ، با استفاده از یک مدل تکمیل چت ، به ویژه با اکوسیستم لاجورد ، با استقرار مدل ساده استفاده کنید.

من مجموعه ای از ایده ها را در اطراف شناور کردم ، اما بعد از بازدید از ناندوس. من در مورد چیزی تصمیم گرفتم که سیستم سفارش آنها را بهبود بخشد. در حال حاضر با مشتریان سیستم خود یک کد QR را روی میز خود اسکن می کنند ، به یک وب سایت هدایت می شوند ، سفارش خود را قرار می دهند و دقایقی بعد ، غذای آنها وارد می شود. صاف ، کارآمد بود.

چگونه مأمورین می توانند این امر را انعطاف پذیر تر کنند؟

هوم؟ چیزی که از گفتار استفاده می کند؟

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

بنابراین من یک Backend سریع FastAPI را تنظیم کردم تا بتوانم به استقرار مدل خود در لاجورد وصل شوم ، یک قسمت جلوی ساده را با HTML و CSS داربست و به جعبه ابزار خلاق من رسیدم.

تصویر زیر خط لوله فعلی را نشان می دهد. این کاربردی است ، اما در عمل بسیار کند است. این امر به این دلیل است که استقرار نماینده لاجورد هنوز از مدل های صوتی پشتیبانی نمی کند. این یک محدودیت است که قابل ذکر است. مشابه Langchain و Hugginface ، آنها نیاز به ادغام با ابزارهای بیرونی گفتار به متن (STT) و متن به گفتار (TTS) برای ساخت برنامه های دارای صدا دارند

خط لوله برای آزمایش

بازی با صدا با استفاده از p5.js

من تجربه ای با P5.js برای هکاتون داشته ام. برای نمونه سازی بصری بسیار انعطاف پذیر و سریع است. بنابراین من فکر کردم ، چرا از آن برای ایجاد یک رابط صوتی محور استفاده نمی کنیم؟ من همچنین یک بار دیدم که کسی مأمور ایجاد می کند که از Blandai برای نمایندگی آنها در مصاحبه استفاده می کند. و من جلوه ها و UI را که از آنها برای نشان دادن امواج صوتی استفاده می کردند ، خیلی دوست داشتم.

بنابراین من چیزی ساده و مشابه را شلاق زدم ، یک حباب گرد و پاسخگو خوب که با استفاده از P5.Audioin () و p5.fft () با ورودی صدای شما پالس می کند.

سپس سنتز گفتار را اضافه کردم تا بتوانید با آن صحبت کنید-و همانطور که صحبت می کنید ، شکل موج می زند و کلمات یک به یک روی صفحه ظاهر می شوند.

سخنرانی را ضبط کنید

  speechRec = new p5.SpeechRec('en-GB', gotSpeech);
  speechRec.continuous = true;
  speechRec.interimResults = false;

  fft = new p5.FFT();
  mic = new p5.AudioIn();
  mic.start();
  fft.setInput(mic);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بعدی این بود که دستورالعمل ها را به نماینده هوش مصنوعی ارائه دهیم. اعلان های مختلف خروجی های مختلف را به وجود می آورند.

 query_embedding = embedder.encode(speech).tolist()
    results = collection.query(query_embeddings=[query_embedding], n_results=5)
    top_chunks = results["documents"][0]
    rag_context = "\n---\n".join(top_chunks)

    messages = [
        {
            "role": "system",
            "content": (
                "You are a helpful Nando's assistant. Help the user place an order by asking for:\n"
                "- Side dish\n- Main dish\n- Drink + size\n- Sauce\n- Table number\n- Payment method\n"
                "Use the following menu context to answer accurately:\n" + rag_context +
                "\nReturn the final order in JSON format when ready."
            )
        },
        {
            "role": "user",
            "content": speech
        }
    ]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خیش

Chromadb به صورت محلی تنظیم شد. این جایی است که درک عمیق تر از تفاوت بین یک مدل کامپوزیت چت عادی و یک عامل مشاهده شد و با آن ، یک منحنی یادگیری کلیدی.

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

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

برای جلوگیری از غواصی خیلی زود ، تنظیم اولیه که با تکمیل چت گیر کرده است ، به طور دستی مدیریت زمینه را تا زمانی که معماری کلی روشن تر شود ، مدیریت می کند.

با استفاده از منوی PDF NANDO ، محتوا به JSON تبدیل شد و برای جاسازی مسطح شد:

تنظیم Chromadb برای RAG

# Flatten content into chunks
for item in menu.get("peri_peri_chicken", []):
    chunks.append(f"{item['name']}: {item['description']} - £{item['price']}")

# ... same for burgers, wraps, drinks, etc.

embeddings = embedder.encode(chunks).tolist()
collection.add(
    documents=chunks,
    embeddings=embeddings,
    ids=[f"item-{i}" for i in range(len(chunks))]
)

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تبدیل مدل پاسخ به صدا

پس از راه اندازی Chroma ، این مدل زمینه آگاه تر بود. نیازی به توهم نبود

پس از پردازش ورودی و پاسخ AI با متن ، خروجی نیاز به تبدیل به بازخورد گفتاری برای تقلید از ارتباطات شفاهی داشت.

چندین ابزار TTS مورد بررسی قرار گرفت. در حالی که برخی نتوانستند خروجی قابل استفاده را ارائه دهند ، GTT ها از سادگی و اثربخشی آن ایستادگی کردند.

بینش لاجورد: Azure رونویسی صوتی را از طریق خدمات گفتاری خود ارائه می دهد – جدا از مدل های چت. و در حالی که پیش نمایش GPT-4O می تواند ورودی صوتی را بپذیرد ، هنوز در نمایندگان کاملاً پشتیبانی نشده است.


    try:
        from gtts import gTTS

        tts = gTTS(text=text, lang='en', slow=False)
        audio_buffer = io.BytesIO()
        tts.write_to_fp(audio_buffer)
        audio_buffer.seek(0)

        # Write to stdout for streaming
        sys.stdout.buffer.write(audio_buffer.read())


حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تنظیم عوامل استقرار مدل مدل تکمیل گپ GPT 4O است. ما نمی توانیم یک مدل صوتی مانند 4o-mini-Realtime-preview را مستقر کنیم

ایده های آینده

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

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

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

تصویری که زیرنویس ها را به نقطه پایانی مدل و پاسخ های GPT 4O نشان می دهد

بزرگترین نکته یادگیری؟

این می تواند به عنوان نسخه 1 پروژه در نظر گرفته شود. بنابراین به خود نیست

  • برای عوامل صوتی، استفاده کنید استقرار مدل صوتی، نه استقرار نماینده لاجورد (که اکنون فقط از مدل های چت پشتیبانی می کنند).
  • برخی از مدل های صوتی مانند GPT-4O-Mini-Realtime-Preview در دسترس هستند ، اما من هنوز آنها را ادغام نکرده ام. احتمالاً این جایی است که وبلاگ بعدی خواهد رفت.
  • نمایندگان صوتی هنوز کاملاً پشتیبانی نشده اند، اما پیش نمایش ها نشان می دهد که بیشتر در حال آمدن است.

این به عنوان یک ایده نیمه پخته شروع شد و با پاها به یک پروژه واقعی تبدیل شد. مرحله بعدی؟ تست های عملکرد بیشتر ، مقایسه مدل بیشتر و ایجاد لایه تعامل.

پروژه را در GitHub من پیگیری کنید
https://github.com/ocansey11/azure.git

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا