Bobbette — 报价聊天机器人

一款对话式助手,能够结构化整理报价请求、提供定价建议,并让销售团队立即行动起来。

对话式商务
Azure OpenAI
检索流水线
RBAC & 治理

角色 & 范围

我主导了从需求探索到生产就绪架构的整个流程。重点是将产品目录、CRM 与定价引擎打通,让聊天机器人能给出富含上下文的回答,并为销售团队减负。

  • 需求探索工作坊,明确用例、数据结构与风险。
  • 基于最新产品数据的 RAG 流水线,包含分块、丰富化与排序。
  • 带有护栏、评估框架与可观测性的 Azure OpenAI,用以保障质量。
  • RBAC 与审计追踪,让商务与法务在合规前提下协作。
查看在线演示

成效

  • 通过自动摘要与任务路由,将报价周期从数天缩短到数小时。
  • 通过一致的跟进以及交叉销售/追加销售方案的推荐,提升转化率。
  • 监控仪表盘提供对质量、使用情况与未来优化方向的实时洞察。

Architectuur

De architectuur draait op Azure OpenAI (GPT-4o), geïntegreerd achter Azure API Management en binnen dezelfde Azure-tenant als de klant — er verlaat dus geen data de bestaande Microsoft-omgeving. Retrieval loopt via Azure AI Search, met een hybride aanpak die vector- en keywordsearch combineert over de productcatalogus. Chunking gebeurt per productkaart in plaats van in vaste tokenblokken, wat nauwkeuriger ophalen van prijs- en configuratieregels oplevert. Een nachtelijke synchronisatiepijplijn vanuit CRM/PIM naar de index zorgt ervoor dat prijzen en productinformatie nooit ouder zijn dan 24 uur. Toegang loopt via rollen in Entra ID-groepen: verkoop ziet alleen eigen accounts, en of offertes automatisch verstuurd mogen worden hangt af van de rol.

Modelkeuze

GPT-4o via Azure OpenAI bleek voordeliger dan een zelf gehost open-source model. Bij dit volume wogen de kosten van eigen GPU's niet op tegen de per-token prijsstelling, en function calling voor gestructureerde prijsvoorstellen werkte betrouwbaarder dan bij de destijds beschikbare open-source alternatieven. Prijsberekening zelf loopt niet via het model, maar via een deterministische lookup — het model stelt voor, rekent niet.

Kosten & latency

  • Modelkosten: indicatief €0,03–0,05 per offerteaanvraag, bij ± 600 aanvragen/maand grofweg €20–30/maand aan tokenkosten.
  • Azure AI Search draait op de kleinste Standard-tier die hybride search ondersteunt.
  • Latency: eerste token doorgaans binnen 900ms (streaming), volledige respons inclusief retrieval p95 rond 2,8s.

Lessons learned

De eerste versie chunkte op vaste tokenblokken van 500 — dat gaf matige precisie, omdat prijsregels en productvarianten soms over de randen van die blokken heen versnipperd raakten. Overschakelen naar semantische chunking per productkaart loste dat op. Daarnaast bleek het model zonder guardrails af en toe prijzen te "verzinnen" bij onvolledige input; opgelost door de prijsbepaling volledig buiten het model te leggen (deterministische lookup, het model doet alleen een voorstel).

Concept — cijfers ter illustratie, nog te verifiëren tegen het daadwerkelijke project vóór publicatie.