Розробка AI-цифрового закупника (AI Procurement Agent)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-цифрового закупника (AI Procurement Agent)
Середній
від 2 тижнів до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

AI Агент закупок — цифровий працівник

AI Агент закупок автоматизує рутинні завдання відділу постачання: обробку заявок, порівняння пропозицій поставщиків, перевірку документів, ведення договорів, моніторинг виконання. Скорочує цикл закупки для стандартних позицій з кількох днів до годин.

Обробка заявок на закупку

from openai import AsyncOpenAI
from pydantic import BaseModel
from typing import Literal, Optional

client = AsyncOpenAI()

class PurchaseRequest(BaseModel):
    item_name: str
    quantity: float
    unit: str
    justification: str
    requested_by: str
    department: str
    budget_code: str
    urgency: Literal["urgent", "planned", "routine"]
    estimated_budget: Optional[float]
    preferred_vendor: Optional[str]
    technical_requirements: Optional[str]

class ProcurementAgent:

    async def process_request(self, request_text: str, requester: dict) -> dict:
        """Розбирає та обробляє заявку на закупку"""

        # Витяг структурованих даних
        parsed = await client.beta.chat.completions.parse(
            model="gpt-4o",
            messages=[{
                "role": "system",
                "content": "Витягни структуровані дані з заявки на закупку. Якщо даних немає — null."
            }, {
                "role": "user",
                "content": f"Заявник: {requester['name']}, {requester['department']}\nЗаявка: {request_text}",
            }],
            response_format=PurchaseRequest,
            temperature=0,
        )

        pr = parsed.choices[0].message.parsed

        # Перевірка бюджету
        budget_check = await self.check_budget_availability(
            budget_code=pr.budget_code,
            amount=pr.estimated_budget,
        )

        # Пошук історичних даних
        similar_purchases = await self.find_similar_purchases(pr.item_name)

        # Рекомендації по поставщику
        vendor_recommendations = await self.get_vendor_recommendations(
            pr.item_name, pr.quantity, similar_purchases
        )

        return {
            "request": pr.model_dump(),
            "budget_status": budget_check,
            "similar_history": similar_purchases[:3],
            "vendor_recommendations": vendor_recommendations,
            "auto_approve": self.can_auto_approve(pr, budget_check),
        }

    def can_auto_approve(self, pr: PurchaseRequest, budget_check: dict) -> bool:
        """Автоматичне одобрення для стандартних позицій у межах ліміту"""
        return (
            budget_check["available"]
            and (pr.estimated_budget or 0) <= 50000  # Ліміт автоодобрення 50 тис руб
            and pr.urgency != "urgent"  # Терміні вимагають ручної перевірки
            and pr.item_name.lower() not in self.non_standard_items
        )

Аналіз пропозицій поставщиків

async def compare_vendor_offers(
    item: str,
    quantity: float,
    offers: list[dict],
    technical_requirements: str = "",
) -> dict:
    """Аналізує та ранжирує пропозиції поставщиків"""

    comparison = await client.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "system",
            "content": """Ти — менеджер по закупкам.
Оціни пропозиції поставщиків комплексно: ціна, терміни, надійність, умови оплати.
Вияви приховані ризики (нереалістичні терміни, невідомий поставщик, невідповідність вимогам)."""
        }, {
            "role": "user",
            "content": f"""Позиція: {item}, кількість: {quantity}
Технічні вимоги: {technical_requirements}

Пропозиції поставщиків:
{json.dumps(offers, ensure_ascii=False, indent=2)}

Створи:
1. Порівняльну таблицю за ключовими параметрами
2. Рекомендацію з обґрунтуванням
3. Ризики вибраного поставщика"""
        }],
    )

    return {
        "analysis": comparison.choices[0].message.content,
        "recommended_vendor": extract_recommendation(comparison.choices[0].message.content),
        "comparison_table": extract_table(offers),
    }

Практичний кейс: виробництво, 200 заявок/місяць

Ситуація: 3 менеджери по закупкам, 200 заявок/місяць, середній цикл 7 днів для стандартних позицій.

AI Агент автоматизував:

  • Приймання та класифікацію заявок (Telegram + email)
  • Перевірку бюджетних лімітів в ERP
  • Запит комерційних пропозицій у 3–5 поставщиків з реєстру
  • Порівняльний аналіз пропозицій
  • Автоодобрення < 50 тис руб (62% заявок)
  • Створення замовлень в ERP

Результати:

  • Цикл стандартної закупки: 7 днів → 1.5 дня
  • Менеджери фокусуються на: стратегічних поставщиках, переговорах, нестандартних позиціях

Терміни

  • Обробка заявок та класифікація: 1–2 тижні
  • Інтеграція з ERP та базою поставщиків: 2–3 тижні
  • Аналіз пропозицій: 1 тиждень
  • Workflow одобрення: 1 тиждень
  • Всього: 5–7 тижнів