Skip to main content
Glama
RudrenduPaul

Electronics RFQ Agent

Electronics RFQ Agent

Ваши инженеры по продажам тратят 2–4 часа на превращение документов RFQ в котировки. Этот инструмент делает это за секунды.

Electronics RFQ Agent — это библиотека Python и CLI, которая читает документы RFQ (PDF, Excel, Word), сопоставляет каждую позицию с вашим каталогом ERP и формирует проект котировки. Он подключается к SAP, Epicor, Oracle и Microsoft Dynamics через MCP-серверы, поэтому работает с Claude, GPT-4 или любой агентной средой, поддерживающей MCP.

CI PyPI version Python 3.10+ License: MIT OpenSSF Scorecard


Терминал, показывающий erfa --help со списком подкоманд quote и audit, а затем erfa audit, выводящий полный отчет о проценте заполнения для RFQ из пяти позиций с использованием мок-бэкенда ERP

Содержание

Related MCP server: databid

Установка

pip install electronics-rfq-agent-cli
# or
uv add electronics-rfq-agent-cli

Чтобы установить из исходного кода:

git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
pip install -e .
# or, with uv:
uv sync

Разбор документов RFQ (PDF, Excel, Word) требует вызова Anthropic API, поэтому установите ANTHROPIC_API_KEY перед запуском любых операций с реальными документами:

export ANTHROPIC_API_KEY="sk-ant-..."

Этот ключ не нужен для запуска erfa audit с существующим файлом котировки или для изучения CLI с помощью --help. Только разбор документов обращается к Claude.

Какую проблему это решает

Мы работали с дистрибьюторами электроники, у которых 3–5 инженеров по продажам проводили большую часть дня за вводом котировок. Каждый инструмент, который мы находили, был либо привязан к конкретной ERP, либо требовал шестимесячного проекта по интеграции. Мы хотели решение, которое работает с тем, что уже есть у дистрибьюторов, может быть развернуто на собственном сервере (данные котировок чувствительны) и действительно расширяемо.

Архитектура MCP означает, что добавление новой ERP — это написание одного файла. Парсер обрабатывает те форматы документов, которые дистрибьюторы действительно отправляют: заполненные вручную PDF, многостраничные Excel-файлы и иногда отсканированные таблицы.

Быстрый старт

Для тестирования не требуется ERP-система; мок-бэкенд поставляется с 200 реалистичными позициями электроники. Вам нужно установить ANTHROPIC_API_KEY, так как разбор документа RFQ по-прежнему выполняется через реальный вызов Claude:

from electronics_rfq_agent import QuoteAgent
from electronics_rfq_agent.mcp.mock import MockERP

agent = QuoteAgent(erp=MockERP())
quote = agent.run_sync("path/to/rfq.xlsx")

for line in quote.lines:
    print(f"{line.rfq_line.part_number}: {line.status} @ {line.unit_price}")

print(quote.summary())

MockERP автоматически применяет уровни ценообразования в зависимости от количества: кол-во >= 1000 дает скидку 20%, кол-во >= 100 — 10%, кол-во >= 10 — 5%. Для количества менее 10 применяется цена из прайс-листа. Это отражает реальное оптовое ценообразование, чтобы бенчмарки и интеграционные тесты отражали реалистичные кривые затрат.

Подключение к реальной ERP:

from electronics_rfq_agent import QuoteAgent
from electronics_rfq_agent.mcp import EpicorMCP

agent = QuoteAgent(
    erp=EpicorMCP(base_url="https://your-epicor.company.com", api_key="..."),
    max_concurrent=10,  # parallel ERP lookups (default: 10)
)
quote = agent.run_sync("rfq_2026_0619.xlsx")
print(quote.summary())

Команды

erfa поставляется с двумя подкомандами. Все флаги ниже взяты из erfa --help.

Команда

Аргументы

Флаги

Что делает

erfa quote

rfq (путь, обязательно)

--mock, --margin <float> (по умолчанию 0.15), --output/-o <путь>

Разбирает файл RFQ и выводит проект котировки. Требуется ANTHROPIC_API_KEY; разбор всегда выполняется через Claude, --mock заменяет только ERP-бэкенд.

erfa audit

quote_file (путь, обязательно)

нет

Выводит полный отчет аудита (найдено / заменено / не найдено, процент заполнения) для JSON-файла котировки, сохраненного с помощью erfa quote --output. Читает только локальный файл, API-ключ не требуется.

erfa mcp

нет

нет

Запускает MCP stdio-сервер, предоставляющий quote_rfq, lookup_part и audit_quote в качестве типизированных инструментов, чтобы любой MCP-совместимый агент (Claude, GPT-4, Gemini) мог вызывать их напрямую, не обращаясь к CLI. Укажите в конфигурации вашего MCP-клиента команду erfa mcp.

# Generate a quote from an RFQ file against the mock ERP
export ANTHROPIC_API_KEY="sk-ant-..."
erfa quote rfq.xlsx --mock

# Save the quote as JSON for later inspection
erfa quote rfq.xlsx --mock --output quote.json

# Audit what happened: what was found, substituted, or missing and why
erfa audit quote.json

Пример вывода аудита (реальный вывод erfa audit docs/example-quote.json, сгенерированный применением логики ценообразования мок-бэкенда к образцу RFQ из tests/fixtures/sample_rfq.txt):

Audit Report - Quote df9fd083
RFQ Source : tests/fixtures/sample_rfq.txt
Lines      : 5
Total      : USD 64.04

FOUND (4)
------------------------------------------------------------
  L  1  RES-0402-10K-1PCT               qty=1000  unit=0.0064  ext=6.40
  L  2  CAP-100NF-50V-X7R-0402          qty=500  unit=0.0104  ext=5.20
  L  3  IC-LM358-SOIC8                  qty=50  unit=0.7101  ext=35.50
  L  4  XTAL-16MHZ-SMD                  qty=25  unit=0.6774  ext=16.94

NOT FOUND (1)
------------------------------------------------------------
  L  5  MOSFET-NMOS-20V-3A-SOT23        Part 'MOSFET-NMOS-20V-3A-SOT23' not found in ERP catalog

Fill rate: 80%  (4 found / 0 substituted / 1 not found)

Позиции с нулевой ценой: Если позиция существует в каталоге ERP, но имеет цену за единицу $0.00, агент укажет цену $0, а не пропустит позицию, и установит line.notes в сообщение, указывающее на нулевую цену, чтобы вы заметили это до отправки котировки клиенту. Проверяйте line.notes для любой найденной или замененной позиции перед отправкой котировки.

Справочник по API

Полная документация находится в docs/api.md: все параметры QuoteAgent, общий интерфейс ERP-коннектора, детальное описание полей Quote/QuoteLineItem и иерархия исключений. Экспорты ниже — это то, что на самом деле дает from electronics_rfq_agent import ..., взятое из src/electronics_rfq_agent/__init__.py, а не предположительное:

Экспорт

Что это

QuoteAgent

Оркестрирует разбор + поиск в ERP + сборку котировки. run() (асинхронный) и run_sync().

EpicorMCP, SAPMCP, OracleMCP, DynamicsMCP

ERP-коннекторы, по одному на каждую поддерживаемую систему. Все реализуют один и тот же интерфейс search_parts / get_part / get_price / check_inventory.

MockERP (из electronics_rfq_agent.mcp.mock)

Внутрипроцессный бэкенд с 200 реалистичными позициями. Без учетных данных и сети.

Quote, QuoteLineItem, RFQLineItem, ERPPartResult, ERPConfig

Pydantic v2 модели для котировки, каждой позиции, разобранной строки RFQ, необработанных данных ERP и конфигурации коннектора.

ERPConnectionError, RFQParseError

Два исключения, которые может вызвать QuoteAgent: ошибки подключения/аутентификации и неразбираемые документы. Построчные ошибки ERP не вызывают исключений; вместо этого они попадают в line.notes.

TelemetryCollector, TelemetryEvent

Дополнительная локальная телеметрия (telemetry=True в QuoteAgent), только счетчики и тайминги, без содержимого RFQ.

Чем отличается от альтернатив

Electronics RFQ Agent

Ручной процесс

SAP Joule

Универсальный ИИ (ChatGPT)

Поддержка нескольких ERP

SAP + Epicor + Oracle + Dynamics

Н/Д

Ориентирован на SAP (Joule Studio может получать доступ к не-SAP источникам через SAP Integration Suite)

Нет доступа к ERP

Время формирования котировки (50 позиций)

~15 сек

2-4 часа

Публично не задокументировано

Н/Д

Возможность саморазмещения

Да

Н/Д

Нет (облачный сервис SAP BTP)

Нет

Данные остаются локальными

Да

Да

Нет

Нет

Открытый исходный код

MIT

Н/Д

Нет

Нет

Мок-бэкенд для разработки

Да

Н/Д

Публично не задокументировано

Н/Д

MCP-совместимость

Да

Н/Д

Публично не задокументировано

Нет

Поддержка ERP

ERP

Статус

Подключение

Документация

Epicor Kinetic

Поддерживается

REST API

Настройка

SAP ECC / S/4HANA

Бета (ручная установка)

PyRFC (BAPI)

Настройка

Oracle Cloud SCM

Поддерживается

REST API

Настройка

Microsoft Dynamics 365

Поддерживается

Graph API

Настройка

Мок-бэкенд

Встроенный

In-memory

Конфигурация не требуется

Примечание по SAP: для pyrfc требуется SAP NetWeaver RFC Library, которой нет на PyPI, и ее необходимо загрузить вручную с портала поддержки SAP (требуется S-пользователь). См. docs/erp-setup/sap.md для пошаговых инструкций.

Бенчмарки

Измерено с использованием внутрипроцессного мок-бэкенда (200 реалистичных позиций, ERP-система не требуется). Запустите сами:

git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
uv run python benchmarks/run.py

Задержка поиска в ERP (100 отдельных запросов, мок-бэкенд):

P50

P99

Среднее

0.00025мс

0.0023мс

0.00032мс

Время сборки котировки в зависимости от размера RFQ (парсер замокан, вызовов Anthropic API нет):

Размер RFQ

Время сборки

10 позиций

0.004с

25 позиций

0.001с

50 позиций

0.001с

Эти цифры покрывают только поиск в ERP и сборку котировки. Парсер RFQ замокан, и вызовов Anthropic API не выполняется. В производственной среде ИИ-разбор документов добавляет 5–15 секунд на документ, а реальные ERP-запросы — 100–500 мс на позицию (распараллеливание до max_concurrent=10), что в сумме дает реалистичные ~15 секунд для RFQ из 50 позиций. Базовый ручной процесс: 2–4 часа.

Матрица интеграций

Electronics RFQ Agent работает с любой агентной средой, поддерживающей MCP:

Framework

Install

Example

Claude (встроенный)

pip install electronics-rfq-agent-cli

01-basic-quote

LangGraph

pip install 'electronics-rfq-agent-cli[langgraph]'

04-langgraph-agent

OpenAI Agents SDK

pip install electronics-rfq-agent-cli[agents]

05-openai-agents

CrewAI

pip install electronics-rfq-agent-cli[crewai]

n/a

Попробуйте в Docker

git clone https://github.com/RudrenduPaul/electronics-rfq-agent
cd electronics-rfq-agent
cp .env.example .env   # add your ERP credentials and Anthropic API key
docker compose up -d

Ваши данные котировок никогда не покидают вашу среду.

Безопасность

  • Сканирование уязвимостей: Trivy сканирует каждый запуск CI (уровень серьезности HIGH/CRITICAL, сборка завершается ошибкой при неисправленных находках), результаты загружаются на вкладку GitHub Security.

  • Подпись релизов: рабочий процесс релиза подписывает собранные wheels и sdists с помощью Sigstore и прикрепляет CycloneDX SBOM к каждому GitHub Release после создания тега версии.

  • Фиксация зависимостей: Dependabot поддерживает актуальность GitHub Actions и зависимостей Python (еженедельные обновления патчей, ежемесячные обновления Actions).

  • Раскрытие информации: SECURITY.md. Сообщайте об уязвимостях конфиденциально по электронной почте или через GitHub Security Advisories; подтверждение в течение 48 часов, ответственное раскрытие в течение 90 дней.

FAQ

Что именно делает Electronics RFQ Agent? Он принимает документ RFQ (PDF, Excel или Word) от клиента, извлекает каждую позицию с помощью Claude, ищет каждую деталь в вашем каталоге ERP через коннектор MCP и возвращает черновую котировку с примененной наценкой. Инженер по продажам проверяет и отправляет её вместо того, чтобы создавать с нуля.

Готов ли он к производственному использованию? Он находится в статусе Beta (v0.2.x). Основная библиотека, коннекторы Epicor, Oracle и Dynamics покрыты CI (lint, mypy strict, pytest с порогом покрытия 80%, сканирование Trivy) для Python 3.10–3.12. Поддержка SAP явно помечена как Beta и требует ручного шага установки (библиотека SAP NetWeaver RFC недоступна на PyPI).

Нужна ли мне ERP-система, чтобы попробовать его? Нет. MockERP поставляется с 200 реалистичными электронными компонентами и применяет ценовые уровни на основе количества, так что вы можете запустить полный цикл «разбор-поиск-котировка» без учетных данных ERP. Вам всё равно понадобится ANTHROPIC_API_KEY, поскольку разбор документов — это реальный вызов Claude. Только erfa audit (чтение уже сохраненного файла котировки) работает вообще без ключа.

Чем это отличается от того, чтобы просто попросить ChatGPT прочитать RFQ? Обычная чат-модель может прочитать документ и даже предположить цены, но у неё нет подключения к вашему фактическому каталогу ERP, складским остаткам или контрактным ценам, поэтому она просто выдумывает цифры. Electronics RFQ Agent ищет каждую позицию в ваших реальных данных каталога и котирует только то, что действительно есть на складе, по фактической себестоимости плюс ваша настроенная наценка.

Чем это отличается от SAP Joule? Joule — это проприетарный ИИ-ассистент SAP, встроенный в облачную платформу SAP (SAP BTP) и ориентированный на данные SAP. Electronics RFQ Agent имеет лицензию MIT, размещается самостоятельно и работает с SAP, Epicor, Oracle и Dynamics через один и тот же интерфейс MCP. Ваши данные котировок никогда не покидают вашу среду, и вы не привязаны к одному вендору ERP.

Как мне вызвать это из агента вместо CLI? Запустите erfa mcp, чтобы поднять MCP-сервер stdio, предоставляющий quote_rfq, lookup_part и audit_quote как типизированные инструменты. Укажите любого MCP-совместимого клиента (Claude, GPT-4, Gemini или пользовательский агентский фреймворк) на erfa mcp как команду запуска, и он сможет вызывать эти инструменты напрямую со структурированным JSON на входе и выходе, без необходимости разбирать вывод CLI.

Какие форматы документов он разбирает? PDF (включая отсканированные таблицы, через возможности зрения Claude), Excel (.xlsx/.xls, ищет по всем листам строку заголовка позиций) и Word (.docx, читает все таблицы). Обычные текстовые RFQ тоже работают.

Что происходит с позицией, которой нет в каталоге ERP? Она помечается как not_found с пояснением причины (а не молча отбрасывается или угадывается), и она исключается из итоговой суммы котировки. Запустите erfa audit на сохранённом JSON котировки, чтобы увидеть, какие именно позиции были найдены, заменены или отсутствуют, и почему.

Могу ли я использовать это в коммерческих целях? Да. Лицензия MIT, поэтому вы можете использовать, модифицировать и распространять его в коммерческих целях без роялти и без обязательства открывать исходный код ваших изменений. Атрибуция требуется только через файл лицензии.

Отправляются ли мои данные RFQ и ценообразования куда-либо помимо Anthropic? Только содержимое документа RFQ отправляется в API Anthropic для разбора. Поиск в ERP идёт напрямую с вашей машины в вашу ERP-систему через настроенный вами коннектор: никакого промежуточного сервиса нет, и ничего не хранится за пределами вашей среды, если вы сами не решите сохранить JSON котировки.

Опубликован ли он на PyPI? Да, как electronics-rfq-agent-cli (pip install electronics-rfq-agent-cli). Конвейер публикации (сборка, подпись Sigstore, SBOM, загрузка через trusted publisher) находится в .github/workflows/release.yml и запускается при каждом push тега v*. Путь импорта Python (electronics_rfq_agent) и команда CLI (erfa) не изменились; только имя пакета для реестра несёт суффикс -cli, что соответствует соглашению об именовании CLI-инструментов этого мейнтейнера.

Участие в разработке

  • Прочтите CONTRIBUTING.md перед открытием PR

  • Хорошие первые задачи помечены в GitHub

  • Адаптеры ERP находятся в electronics_rfq_agent/mcp/; каждый представляет собой самодостаточный файл без изменений в ядре

  • Все PR требуют покрытия тестами 80%

GitHub Discussions: Задавайте вопросы, делитесь идеями Discord: скоро

Полная документация: Начало работы · Справочник API · Настройка ERP: Epicor · SAP · Oracle · Dynamics 365 · Журнал изменений

Лицензия MIT. Вклад приветствуется.

Лицензия

MIT. См. LICENSE.

Цитирование

Если вы используете Electronics RFQ Agent в исследованиях, пожалуйста, цитируйте:

@software{paul2026electronicsrfq,
  author = {Paul, Rudrendu and Nandy, Sourav},
  title = {Electronics RFQ Agent: AI Quoting Agent for Electronics Distributors},
  year = {2026},
  url = {https://github.com/RudrenduPaul/electronics-rfq-agent},
  license = {MIT}
}

Создано Rudrendu Paul и Sourav Nandy

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Intelligently generates cost estimates and lead times for manufacturing RFPs by parsing requests, matching against historical quotes, and calculating activity-based costs with confidence scoring and human approval workflows.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Agent-native company intelligence. AI agents search and retrieve structured, verified company context (certifications, capabilities, capacity, lead times) for manufacturing & supply chain via 5 MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A FastMCP runtime that lets AI tools search electronic components, prices, and availability across the Distrify distributor network through one connection, federating queries across accessible distributors.
    MIT