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)
- Проверка бюджетных лимитов в 1С
- Запрос КП у 3–5 поставщиков из реестра
- Сравнительный анализ предложений
- Автоодобрение < 50 тыс руб (62% заявок)
- Создание заказов в 1С
Результаты:
- Цикл стандартной закупки: 7 дней → 1.5 дня
- Менеджеры фокусируются на: стратегических поставщиках, переговорах, нестандартных позициях
Сроки
- Обработка заявок и классификация: 1–2 недели
- Интеграция с 1С и базой поставщиков: 2–3 недели
- Анализ предложений: 1 неделя
- Approval workflow: 1 неделя
- Итого: 5–7 недель







