Enterprise-Scale Prompt Engineering Toolkit with Lifecycle Management and Production Integration

uber · Tech · 2023 · source Agentic: no · promotional bias: med · summary-only (no fetched source) · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Enterprise prompt lifecycle management

Uber needed a centralized way for teams to discover LLMs, create and version prompt templates, evaluate prompts, run batch inference, deploy safe revisions, and monitor production prompt performance across diverse LLM use cases.

Constraints:

Architecture

Uber's Prompt Engineering Toolkit centralizes the prompt lifecycle. Users explore LLMs through a model catalog and GenAI Playground, iterate on prompt templates through a UI/SDK with revisions and code review, evaluate templates through LLM-as-judge or code evaluators, deploy approved revisions through named ObjectConfig-backed deployments, execute online prompts through GetAPI/Execute API, run offline batch generation pipelines, and monitor production behavior through daily MES dashboards for latency, accuracy, correctness, and regressions.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  model-catalog-and-genai-playground["Model catalog and GenAI Playground"] --> prompt-template-ui-sdk["Prompt Template UI SDK"]
  prompt-template-ui-sdk --> template-storage["Template storage"]
  prompt-template-ui-sdk --> getapi-and-execute-api["GetAPI and Execute API"]
  prompt-template-ui-sdk --> prompt-template-evaluation-pipeline["Prompt Template Evaluation Pipeline"]
  langfx-framework["Langfx framework"] --> prompt-template-ui-sdk
  template-storage --> offline-generation-pipeline["Offline Generation Pipeline"]
  template-storage --> objectconfig-deployment["ObjectConfig deployment"]
  prompt-template-evaluation-pipeline --> objectconfig-deployment
  getapi-and-execute-api --> production-services["Production services"]
  offline-generation-pipeline --> production-services
  objectconfig-deployment --> production-services
  production-services --> mes-monitoring-dashboard["MES monitoring dashboard"]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Model catalog and GenAI Playground Model discovery, capability exploration, cost estimation, performance context, and early prompt testing. Prompt Template UI SDK
Prompt Template UI SDK Authoring surface for prompt templates, revisions, placeholders, and prompt reuse. Template storage, GetAPI and Execute API, Prompt Template Evaluation Pipeline
Template storage ETCD and UCS/Object Configuration Storage for models and prompts. Offline Generation Pipeline, ObjectConfig deployment
GetAPI and Execute API Retrieves templates and executes prompts against selected models for online services. Production services
Prompt Template Evaluation Pipeline Evaluates prompt quality with LLM-as-judge and custom code evaluators before productionization. ObjectConfig deployment
Offline Generation Pipeline Asynchronous batch inference path for use cases such as rider-name validation and RAG-assisted generation. Production services
ObjectConfig deployment Named deployment and universal configuration synchronization layer for safe production prompt revisions. Production services
Langfx framework Uber's LangChain-based abstraction for standardized LLM interactions and auto-prompt building. Prompt Template UI SDK
MES monitoring dashboard Daily production monitoring dashboard for latency, accuracy, correctness, and regression signals. Production services
Production services Online and offline Uber services consuming deployed prompt templates. MES monitoring dashboard

Data flow

During development, a team chooses a model from the catalog, creates a prompt template, tests revisions, and evaluates performance on datasets. When a revision passes thresholds and review, it is tagged under a deployment name and synchronized through ObjectConfig to production services. Runtime callers provide placeholder values to Execute API or batch pipelines; outputs and production traffic feed monitoring dashboards for daily quality tracking.

“The prompt template iteration phase is where the core prompt engineering work happens. Users identify business needs, gather sample data, create and test prompts, and make iterative revisions.”summary, stated
“The deployment mechanism leverages ObjectConfig for what Uber calls "universal configuration synchronization," ensuring that production services fetch the correct prompt template upon deployment.”summary, stated

Why this architecture

Uber separated prompt development from productionization because prompt iteration needs exploration and frequent change, while live services need reviewed, evaluated, named revisions that do not change accidentally. Centralizing model discovery, prompt storage, execution APIs, batch generation, and monitoring gives teams self-service without losing governance.

“The toolkit structures the prompt engineering process into two distinct stages: development and productionization.”summary, stated
“This prevents accidental changes to production services.”summary, stated

Models used: Langfx · LangChain · LLM-as-judge · ETCD · UCS · ObjectConfig · MES · Jinja

Scale

Alternatives considered (roads not taken)

Let every team manage prompts and model choice independently.

Rejected because: Uber needed centralization to avoid siloed LLM integration and inconsistent prompt quality practices.

“The core motivation behind the toolkit was the need for centralization—enabling teams to seamlessly construct prompt templates, manage them with proper governance”summary, stated

Automatically expose every prompt update to production.

Rejected because: Production prompt templates should be pinned to preferred reviewed revisions under deployment names.

“users may not want their production prompt templates altered with each update, as inadvertent errors in revisions could impact live systems.”summary, stated

Evaluate prompts only with LLM-as-judge.

Rejected because: The toolkit supports both model-based subjective evaluation and custom code metrics for tailored assessment.

“The toolkit supports two evaluation mechanisms: using an LLM as the evaluator (the "LLM as Judge" paradigm) and using custom, user-defined code for assessment.”summary, stated

Patterns

prompt-versioning (prompt lifecycle)

Prompt templates are revised through code-review-like iteration and deployed under named production tags to prevent accidental live changes.

“Prompt template iteration follows code-based iteration best practices, requiring code review for every iteration.”summary, stated

eval-driven-development (quality)

Productionization only proceeds after prompt templates pass evaluation thresholds.

“The productionization stage only proceeds with prompt templates that have passed evaluation thresholds.”summary, stated

llm-as-judge (evaluation)

The toolkit can evaluate subjective prompt quality with an LLM evaluator alongside custom code metrics.

“using an LLM as the evaluator (the "LLM as Judge" paradigm) and using custom, user-defined code for assessment.”summary, stated

batch-offline-processing (execution)

Rider name validation runs through an asynchronous offline batch generation pipeline over existing and new usernames.

“The LLM Batch Offline Generation pipeline processes all existing usernames in Uber's consumer database plus new registrations asynchronously in batches.”summary, stated

observability-tracing (production monitoring)

A daily monitoring pipeline tracks production prompt template performance and regressions in MES dashboards.

“Metrics tracked include latency, accuracy, and correctness, among others. Results are displayed in an MES (Machine Learning Experimentation System) dashboard that refreshes daily.”summary, stated

Tradeoffs

Separate development from productionization.

Chose Exploration/iteration/evaluation before reviewed production deployment over Directly shipping prompt changes from experimentation to live services.

Rationale: The separation keeps self-service iteration fast while preserving production gates.

“This separation reflects mature LLMOps thinking about the differences between experimentation and production deployment.”summary, stated

Use deployment names for prompt revisions.

Chose Named production tags backed by ObjectConfig over Always consuming the latest prompt revision.

Rationale: Production services need stable chosen revisions even while prompt templates continue to evolve.

“prompt templates can be deployed under arbitrary deployment names, allowing users to "tag" their preferred prompt template for production.”summary, stated

Support both LLM-as-judge and code evaluators.

Chose Hybrid evaluation mechanisms over A single evaluation method for every prompt.

Rationale: Subjective quality and custom business metrics require different evaluation tools.

“The LLM-as-judge approach is noted as particularly useful for subjective quality assessments or linguistic nuances, while code-based evaluation allows for highly tailored metrics.”summary, stated

Gotchas (what bit them)

Prompt updates can break live systems if revisions are consumed automatically.

Root cause: Prompt templates change frequently during iteration, but production services need stable known-good versions.

Resolution: Deploy prompts under arbitrary deployment names that tag the preferred revision for production.

“users may not want their production prompt templates altered with each update, as inadvertent errors in revisions could impact live systems.”summary, stated

Centralized LLMOps patterns are not automatically portable.

Root cause: Uber's implementation depends on internal systems such as ObjectConfig, MES, and Langfx.

Resolution: Treat the design as a reference architecture and adapt the lifecycle controls to local infrastructure.

“The integration with Uber-specific infrastructure (ObjectConfig, MES, internal Langfx service) means the specific implementation isn't directly transferable to other organizations”summary, stated

The case lacks quantitative outcome evidence.

Root cause: The source is a technical architecture overview rather than a results-focused case study.

Resolution: Use it as an LLMOps design pattern, not as proof of business impact.

“there are no quantitative metrics on improved prompt quality, reduced development time, or cost savings.”summary, stated

Evaluation

The toolkit evaluates prompts before deployment with LLM-as-judge and custom code metrics, then monitors production prompt behavior daily for latency, accuracy, correctness, and regressions.

Metrics: Prompt-template evaluation threshold pass/fail · LLM-as-judge subjective quality · Custom code-based metrics · Latency · Accuracy · Correctness · Daily regression detection

“Production monitoring is treated as a first-class concern in the toolkit.”summary, stated
“This monitoring approach enables regression detection and continuous quality tracking for each production prompt template iteration.”summary, stated

Outcomes

The strongest quantitative cadence is daily production monitoring; the case otherwise emphasizes architecture rather than result metrics.

“The second use case involves online LLM services for customer support ticket summarization.”summary, stated
“While specific outcomes aren't quantified, the architectural patterns and lifecycle management concepts provide valuable reference points”summary, stated