Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .esbuild.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ const baseNodeBuildOptions = {
'sqlite3',
'node-pty', // Required by @github/copilot
'@github/copilot',
'sharp', // Image processing with native bindings
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 'sharp' package is added to the external dependencies list with a comment "Image processing with native bindings", but there's no usage of image processing in the code changes for this PR. Similar to the 'adm-zip' issue, if this is not related to the model router prototype, it should be in a separate commit. If it is needed for this feature, the usage is not evident in the diff.

Suggested change
'sharp', // Image processing with native bindings

Copilot uses AI. Check for mistakes.
...(isDev ? [] : ['dotenv', 'source-map-support'])
],
platform: 'node',
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "copilot-chat",
"displayName": "GitHub Copilot Chat",
"description": "AI chat features powered by Copilot",
"version": "0.34.0",
"version": "0.34.0-model-router-v0",
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The version has been changed to 0.34.0-model-router-v0, which includes a prerelease identifier. This is appropriate for a prototype/experimental feature. However, ensure this version string is reverted before merging to main, or verify that the release process handles prerelease versions correctly. Prerelease versions in package.json can cause issues with extension marketplace publishing if not handled properly.

Suggested change
"version": "0.34.0-model-router-v0",
"version": "0.34.0",

Copilot uses AI. Check for mistakes.
"build": "1",
"internalAIKey": "1058ec22-3c95-4951-8443-f26c1f325911",
"completionsCoreVersion": "1.378.1799",
Expand Down
119 changes: 108 additions & 11 deletions src/platform/endpoint/node/automodeService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,29 @@ import { IInstantiationService } from '../../../util/vs/platform/instantiation/c
import { ChatLocation } from '../../../vscodeTypes';
import { IAuthenticationService } from '../../authentication/common/authentication';
import { ILogService } from '../../log/common/logService';
import { IFetcherService } from '../../networking/common/fetcherService';
import { IChatEndpoint } from '../../networking/common/networking';
import { IExperimentationService } from '../../telemetry/common/nullExperimentationService';
import { ICAPIClientService } from '../common/capiClient';
import { AutoChatEndpoint } from './autoChatEndpoint';
import { ReasoningClassifier } from './reasoningClassifier';

// Exact model names for reasoning-capable models (more capable, expensive models)
const REASONING_MODELS = [
'claude-sonnet-4.5',
'gpt-5-codex',
'gpt-5',
'gemini-3-pro-preview'
] as const;

// Exact model names for low/no reasoning models (fast, cheaper models)
const LOW_REASONING_MODELS = [
'claude-haiku-4.5',
'gpt-5-mini',
'gpt-4.1',
'gpt-5-nano',
'grok-code-fast-1'
] as const;

Comment on lines +22 to 38
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The model names in these constant arrays appear to mix actual production models (like 'gpt-4.1') with potentially hypothetical future models (like 'gpt-5', 'gpt-5-mini', 'gpt-5-nano', 'gpt-5-codex', 'claude-sonnet-4.5', 'claude-haiku-4.5', 'gemini-3-pro-preview', 'grok-code-fast-1'). While the codebase does reference some of these models elsewhere, it's important to document which models are:

  1. Currently available in production
  2. Planned for future release
  3. Hypothetical examples for testing

This is especially critical since the model selection logic depends on exact string matches. If these model names don't match what the API actually returns in available_models, the routing logic will always fall back to the server's selection.

Suggested change
// Exact model names for reasoning-capable models (more capable, expensive models)
const REASONING_MODELS = [
'claude-sonnet-4.5',
'gpt-5-codex',
'gpt-5',
'gemini-3-pro-preview'
] as const;
// Exact model names for low/no reasoning models (fast, cheaper models)
const LOW_REASONING_MODELS = [
'claude-haiku-4.5',
'gpt-5-mini',
'gpt-4.1',
'gpt-5-nano',
'grok-code-fast-1'
] as const;
// Model names for reasoning-capable models (more capable, expensive models)
// Please keep these lists up to date and document the status of each model.
// Production models: currently available in the API
const PRODUCTION_REASONING_MODELS = [
// Add actual production models here, e.g.:
// 'gpt-4.1',
] as const;
// Planned models: announced but not yet available
const PLANNED_REASONING_MODELS = [
'claude-sonnet-4.5', // planned
'gemini-3-pro-preview', // planned
] as const;
// Hypothetical/test models: not available, used for testing or future-proofing
const HYPOTHETICAL_REASONING_MODELS = [
'gpt-5-codex', // hypothetical
'gpt-5', // hypothetical
] as const;
// Model names for low/no reasoning models (fast, cheaper models)
// Production models: currently available in the API
const PRODUCTION_LOW_REASONING_MODELS = [
'gpt-4.1', // production
] as const;
// Planned models: announced but not yet available
const PLANNED_LOW_REASONING_MODELS = [
'claude-haiku-4.5', // planned
] as const;
// Hypothetical/test models: not available, used for testing or future-proofing
const HYPOTHETICAL_LOW_REASONING_MODELS = [
'gpt-5-mini', // hypothetical
'gpt-5-nano', // hypothetical
'grok-code-fast-1', // hypothetical
] as const;

Copilot uses AI. Check for mistakes.
interface AutoModeAPIResponse {
available_models: string[];
Expand Down Expand Up @@ -106,13 +125,15 @@ export class AutomodeService extends Disposable implements IAutomodeService {
readonly _serviceBrand: undefined;
private readonly _autoModelCache: Map<string, { endpoint: IChatEndpoint; tokenBank: AutoModeTokenBank }> = new Map();
private _reserveTokens: DisposableMap<ChatLocation, AutoModeTokenBank> = new DisposableMap();
private readonly _reasoningClassifier: ReasoningClassifier;

constructor(
@ICAPIClientService private readonly _capiClientService: ICAPIClientService,
@IAuthenticationService private readonly _authService: IAuthenticationService,
@ILogService private readonly _logService: ILogService,
@IInstantiationService private readonly _instantiationService: IInstantiationService,
@IExperimentationService private readonly _expService: IExperimentationService
@IExperimentationService private readonly _expService: IExperimentationService,
@IFetcherService private readonly _fetcherService: IFetcherService
) {
super();
this._register(this._authService.onDidAuthenticationChange(() => {
Expand All @@ -127,6 +148,9 @@ export class AutomodeService extends Disposable implements IAutomodeService {
}
}));
this._serviceBrand = undefined;

// Initialize reasoning classifier (uses remote API)
this._reasoningClassifier = this._register(new ReasoningClassifier(this._fetcherService, this._logService));
}

override dispose(): void {
Expand All @@ -148,15 +172,6 @@ export class AutomodeService extends Disposable implements IAutomodeService {

const conversationId = getConversationId(chatRequest);
const entry = this._autoModelCache.get(conversationId);
if (entry) {
const entryToken = await entry.tokenBank.getToken();
if (entry.endpoint.model !== entryToken.selected_model) {
// Model changed during a token refresh -> map to new endpoint
const newModel = knownEndpoints.find(e => e.model === entryToken.selected_model) || knownEndpoints[0];
entry.endpoint = this._instantiationService.createInstance(AutoChatEndpoint, newModel, entryToken.session_token, entryToken.discounted_costs?.[newModel.model] || 0, this._calculateDiscountRange(entryToken.discounted_costs));
}
return entry.endpoint;
}

// No entry yet -> Promote reserve token to active and repopulate reserve
const location = chatRequest?.location ?? ChatLocation.Panel;
Expand All @@ -167,7 +182,31 @@ export class AutomodeService extends Disposable implements IAutomodeService {
reserveTokenBank.debugName = conversationId;

const reserveToken = await reserveTokenBank.getToken();
const selectedModel = knownEndpoints.find(e => e.model === reserveToken.selected_model) || knownEndpoints[0];

// Check if a low reasoning model should be used based on the user's query
const shouldUseLowReasoning = await this._shouldUseLowReasoningModel(chatRequest);

// Check the current entry's model against the reasoning requirements and availability
if (entry) {
const targetModels = shouldUseLowReasoning ? LOW_REASONING_MODELS : REASONING_MODELS;
const currentModel = entry.endpoint.model;

// If current model is still available and matches reasoning requirements, keep it
if (reserveToken.available_models.includes(currentModel) &&
(targetModels as readonly string[]).includes(currentModel)) {
this._logService.info(`Keeping current model ${currentModel} - still available and matches ${shouldUseLowReasoning ? 'low reasoning' : 'reasoning'} requirements`);
return entry.endpoint;
}

this._logService.info(`Current model ${currentModel} needs to be changed - available: ${reserveToken.available_models.includes(currentModel)}, matches reasoning requirements: ${(targetModels as readonly string[]).includes(currentModel)}`);
}

const selectedModel = this._selectModelBasedOnReasoning(
knownEndpoints,
reserveToken,
shouldUseLowReasoning
);

const autoEndpoint = this._instantiationService.createInstance(AutoChatEndpoint, selectedModel, reserveToken.session_token, reserveToken.discounted_costs?.[selectedModel.model] || 0, this._calculateDiscountRange(reserveToken.discounted_costs));
this._autoModelCache.set(conversationId, { endpoint: autoEndpoint, tokenBank: reserveTokenBank });
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a logic error in the control flow. When entry exists (line 190), the code checks if the current model matches requirements and returns early if it does (line 198). However, if the entry exists but the model doesn't match requirements (line 201), the code continues to line 204 to select a new model. The problem is that after selecting the new model and creating a new endpoint (line 210), the code updates the cache with the new endpoint AND the reserveTokenBank (line 211). But reserveTokenBank was just created and assigned to the reserve (line 179), not promoted from the existing entry. This means the existing entry's token bank is discarded. The previous logic (removed in this diff around lines 175-182) handled token refresh for existing entries, but the new implementation doesn't properly update the token bank when an existing entry's model needs to change.

Suggested change
this._autoModelCache.set(conversationId, { endpoint: autoEndpoint, tokenBank: reserveTokenBank });
this._autoModelCache.set(conversationId, { endpoint: autoEndpoint, tokenBank: entry ? entry.tokenBank : reserveTokenBank });

Copilot uses AI. Check for mistakes.
return autoEndpoint;
Expand All @@ -192,6 +231,64 @@ export class AutomodeService extends Disposable implements IAutomodeService {
}
return hasValues ? { low, high } : { low: 0, high: 0 };
}

/**
* Determines if the user's query should use a low reasoning model (for simple queries)
*/
private async _shouldUseLowReasoningModel(chatRequest: ChatRequest | undefined): Promise<boolean> {
if (!chatRequest || !chatRequest.prompt || chatRequest.prompt.trim().length === 0) {
return true;
}

try {
// Use ModernBERT classifier to determine if query needs reasoning
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment on line 244 mentions "ModernBERT classifier" but this is misleading - the ReasoningClassifier class actually calls a remote API endpoint (as indicated by the class name and implementation). The comment should accurately describe that this uses a remote classifier service, not a locally-run ModernBERT model. This could confuse future maintainers about the architecture.

Suggested change
// Use ModernBERT classifier to determine if query needs reasoning
// Use remote classifier service to determine if query needs reasoning

Copilot uses AI. Check for mistakes.
// Classifier outputs: 0 = reasoning required, 1 = non-reasoning (simple)
const isSimpleQuery = await this._reasoningClassifier.classify(chatRequest.prompt);

this._logService.info(`Low reasoning model should be used: ${isSimpleQuery}`);
return isSimpleQuery;
} catch (error) {
this._logService.error('Failed to determine reasoning model requirement', error);
return false;
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error handling in _shouldUseLowReasoningModel catches all errors and defaults to returning false (use reasoning model). However, this fallback behavior is questionable - if the classifier service is unavailable, it might be better to default to true (use low reasoning model) to reduce costs and latency, or to propagate the error rather than silently failing. Consider documenting why false is the appropriate fallback, or reconsider the fallback strategy.

Suggested change
return false;
// Fallback: If classifier is unavailable, default to low reasoning model to reduce costs and latency.
return true;

Copilot uses AI. Check for mistakes.
}
}

/**
* Selects the appropriate model based on reasoning requirements
*/
private _selectModelBasedOnReasoning(
knownEndpoints: IChatEndpoint[],
autoModeResponse: AutoModeAPIResponse,
shouldUseLowReasoning: boolean
): IChatEndpoint {
const targetModels = shouldUseLowReasoning ? LOW_REASONING_MODELS : REASONING_MODELS;
const modelType = shouldUseLowReasoning ? 'low reasoning' : 'reasoning';

// First check if the server's selected_model already matches our requirements
if ((targetModels as readonly string[]).includes(autoModeResponse.selected_model)) {
const selectedEndpoint = knownEndpoints.find(e => e.model === autoModeResponse.selected_model);
if (selectedEndpoint) {
this._logService.info(`Using server's selected ${modelType} model: ${selectedEndpoint.model}`);
return selectedEndpoint;
}
}

// If selected_model doesn't match, search available_models for a match
for (const modelName of targetModels) {
if (autoModeResponse.available_models.includes(modelName)) {
const endpoint = knownEndpoints.find(e => e.model === modelName);
if (endpoint) {
this._logService.info(`Selected ${modelType} model from available_models: ${endpoint.model}`);
return endpoint;
}
}
}

// Fallback to the server's selected model or first available
this._logService.info(`No matching ${modelType} model found, using server's selection: ${autoModeResponse.selected_model}`);
return knownEndpoints.find(e => e.model === autoModeResponse.selected_model) || knownEndpoints[0];
}
Comment on lines +238 to +290
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new model selection logic in automodeService.ts that uses the reasoning classifier is not covered by unit tests. The changes to resolveAutoModeEndpoint, _shouldUseLowReasoningModel, and _selectModelBasedOnReasoning methods introduce complex branching logic for model selection based on reasoning requirements, but there are no corresponding test files for automodeService. This makes it difficult to verify the correctness of the new routing logic and increases the risk of regressions. Consider adding unit tests that cover:

  • Model selection when classifier returns reasoning required vs. not required
  • Handling of existing cached entries with model switching
  • Fallback behavior when classifier fails
  • Model selection when target models are/aren't in available_models

Copilot uses AI. Check for mistakes.

}

/**
Expand Down
70 changes: 70 additions & 0 deletions src/platform/endpoint/node/reasoningClassifier.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import { Disposable } from '../../../util/vs/base/common/lifecycle';
import { ILogService } from '../../log/common/logService';
import { IFetcherService } from '../../networking/common/fetcherService';

// Remote reasoning classifier configuration
export const REASONING_CLASSIFIER_API_URL = 'https://model-router-v0.yellowforest-598004f3.westus3.azurecontainerapps.io/predict';
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The API URL is hardcoded as a public constant. This Azure Container Apps URL appears to be a development/testing endpoint and should not be hardcoded in production code. Consider:

  1. Making this configurable via settings or environment variables
  2. Adding appropriate error handling for when the service is unavailable
  3. Documenting whether this is intended for production use or just prototyping

Additionally, there's no authentication/authorization for this endpoint, which could be a security concern if sensitive query data is being sent to an external service.

Suggested change
// Remote reasoning classifier configuration
export const REASONING_CLASSIFIER_API_URL = 'https://model-router-v0.yellowforest-598004f3.westus3.azurecontainerapps.io/predict';
/**
* Remote reasoning classifier API endpoint.
* The URL can be configured via the environment variable REASONING_CLASSIFIER_API_URL.
* If not set, defaults to the development endpoint below.
* WARNING: Do not use the default endpoint in production. Configure appropriately.
*/
export const REASONING_CLASSIFIER_API_URL =
process.env.REASONING_CLASSIFIER_API_URL ||
'https://model-router-v0.yellowforest-598004f3.westus3.azurecontainerapps.io/predict';

Copilot uses AI. Check for mistakes.

interface ReasoningClassifierResponse {
text: string;
predicted_label: 'needs_reasoning' | 'no_reasoning';
confidence: number;
scores: {
needs_reasoning: number;
no_reasoning: number;
};
}

/**
* Remote reasoning classifier that calls an external API to determine
* whether a query requires reasoning or not.
* Output: true if non-reasoning (simple query), false if reasoning required
*/
export class ReasoningClassifier extends Disposable {
constructor(
private readonly _fetcherService: IFetcherService,
private readonly _logService: ILogService
) {
super();
}

/**
* Classify a query as reasoning or non-reasoning by calling remote API
* @param query The user's query text
* @returns true if non-reasoning (simple query), false if reasoning required
*/
async classify(query: string): Promise<boolean> {
try {
const response = await this._fetcherService.fetch(REASONING_CLASSIFIER_API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ text: query })
});
Comment on lines +43 to +49
Copy link

Copilot AI Dec 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fetch request to the external classifier API has no timeout configured. If the remote service becomes slow or unresponsive, this could block model selection indefinitely, degrading the user experience. Consider adding a timeout to the fetch options (e.g., 2-5 seconds) and handling timeout errors appropriately in the fallback logic.

Copilot uses AI. Check for mistakes.

if (!response.ok) {
throw new Error(`Reasoning classifier API request failed: ${response.statusText}`);
}

const body = await response.text();
const result: ReasoningClassifierResponse = JSON.parse(body);

const isNonReasoning = result.predicted_label === 'no_reasoning';
const confidence = result.confidence;

this._logService.trace(`Reasoning classifier prediction: ${result.predicted_label} (confidence: ${(confidence * 100).toFixed(1)}%, scores: needs_reasoning=${(result.scores.needs_reasoning * 100).toFixed(1)}%, no_reasoning=${(result.scores.no_reasoning * 100).toFixed(1)}%)`);

return isNonReasoning;
} catch (error) {
this._logService.error('Reasoning classification failed', error);
throw error;
}
}
}

100 changes: 100 additions & 0 deletions src/platform/endpoint/node/test/eval_data_100.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
{"text":"What is the syntax for a for loop in Python?","label":1}
{"text":"How do I declare a variable in JavaScript?","label":1}
{"text":"What is the difference between let and const?","label":1}
{"text":"How do I print Hello World in Java?","label":1}
{"text":"What is the file extension for TypeScript files?","label":1}
{"text":"How do I create a new array in JavaScript?","label":1}
{"text":"What is the command to install npm packages?","label":1}
{"text":"How do I comment out code in Python?","label":1}
{"text":"What is the shortcut to format code in VS Code?","label":1}
{"text":"How do I check the Node.js version?","label":1}
{"text":"What does the === operator do in JavaScript?","label":1}
{"text":"How do I import a module in Python?","label":1}
{"text":"What is the git command to check status?","label":1}
{"text":"How do I create a function in JavaScript?","label":1}
{"text":"What is the syntax for an if statement in C#?","label":1}
{"text":"How do I convert a string to integer in Python?","label":1}
{"text":"What is the command to run a Python script?","label":1}
{"text":"How do I add an element to a list in Python?","label":1}
{"text":"What is the default port for React development server?","label":1}
{"text":"How do I exit vim?","label":1}
{"text":"What is the syntax for a switch statement in Java?","label":1}
{"text":"How do I check if a key exists in a dictionary?","label":1}
{"text":"What is the git command to create a new branch?","label":1}
{"text":"How do I read a file in Python?","label":1}
{"text":"What is the keyboard shortcut to open terminal in VS Code?","label":1}
{"text":"How do I reverse a string in JavaScript?","label":1}
{"text":"What is the syntax for try-catch in Python?","label":1}
{"text":"How do I install a specific version of a package with npm?","label":1}
{"text":"What is the command to initialize a git repository?","label":1}
{"text":"How do I get the length of a list in Python?","label":1}
{"text":"What does async/await do?","label":1}
{"text":"How do I concatenate strings in Java?","label":1}
{"text":"What is the syntax for a lambda function in Python?","label":1}
{"text":"How do I sort an array in JavaScript?","label":1}
{"text":"What is the command to start a Docker container?","label":1}
{"text":"How do I remove duplicates from a list in Python?","label":1}
{"text":"What is the syntax for string interpolation in C#?","label":1}
{"text":"How do I check the type of a variable in Python?","label":1}
{"text":"What is the command to build a TypeScript project?","label":1}
{"text":"How do I use map function in JavaScript?","label":1}
{"text":"What is the syntax for destructuring in JavaScript?","label":1}
{"text":"How do I parse JSON in Python?","label":1}
{"text":"What is the git command to undo last commit?","label":1}
{"text":"How do I create a class in Python?","label":1}
{"text":"What is the difference between == and equals() in Java?","label":1}
{"text":"How do I use spread operator in JavaScript?","label":1}
{"text":"What is the command to run tests with pytest?","label":1}
{"text":"How do I handle null values in TypeScript?","label":1}
{"text":"What is the syntax for a list comprehension in Python?","label":1}
{"text":"How do I make an HTTP request in JavaScript?","label":1}
{"text":"Design a scalable microservices architecture for an e-commerce platform with high availability and fault tolerance","label":0}
{"text":"Help me architect a real-time collaborative document editing system like Google Docs","label":0}
{"text":"Create a comprehensive strategy for migrating a monolithic application to microservices without downtime","label":0}
{"text":"Design a machine learning pipeline for detecting fraudulent transactions with explainability requirements","label":0}
{"text":"Develop a caching strategy for a multi-region distributed application with consistency guarantees","label":0}
{"text":"Architect a serverless event-driven system for processing millions of IoT sensor readings per second","label":0}
{"text":"Design a secure authentication and authorization system with SSO, MFA, and role-based access control","label":0}
{"text":"Create a data lake architecture for analytics with real-time and batch processing capabilities","label":0}
{"text":"Help me design a recommendation engine that balances personalization with diversity and fairness","label":0}
{"text":"Architect a CI/CD pipeline with canary deployments, feature flags, and automated rollback capabilities","label":0}
{"text":"Design a distributed consensus algorithm for a blockchain-based voting system","label":0}
{"text":"Create an API versioning and deprecation strategy for a public API with thousands of consumers","label":0}
{"text":"Help me architect a multi-tenant SaaS platform with data isolation and customization options","label":0}
{"text":"Design a disaster recovery strategy with RTO of 15 minutes and RPO of 5 minutes","label":0}
{"text":"Develop a testing strategy for a complex distributed system with eventual consistency","label":0}
{"text":"Architect a search system that handles fuzzy matching, relevance ranking, and personalization","label":0}
{"text":"Design a rate limiting and throttling system that handles bursty traffic fairly","label":0}
{"text":"Create a monitoring and observability strategy for a Kubernetes-based microservices platform","label":0}
{"text":"Help me design a data synchronization system between mobile apps and backend with conflict resolution","label":0}
{"text":"Architect a notification system that delivers messages across multiple channels with delivery guarantees","label":0}
{"text":"Design a workflow orchestration engine for complex business processes with compensation logic","label":0}
{"text":"Create a content delivery strategy for a global video streaming platform with adaptive bitrate","label":0}
{"text":"Help me architect a financial trading system with sub-millisecond latency requirements","label":0}
{"text":"Design an A/B testing framework that handles feature interactions and statistical significance","label":0}
{"text":"Develop a schema evolution strategy for a large-scale data warehouse with backward compatibility","label":0}
{"text":"Architect a secrets management system with automatic rotation and audit logging","label":0}
{"text":"Design a queue-based system for processing long-running jobs with priority and fairness","label":0}
{"text":"Create a database sharding strategy for a social network with complex relationship queries","label":0}
{"text":"Help me design a plugin architecture that allows third-party extensions while maintaining security","label":0}
{"text":"Architect an image processing pipeline that handles millions of uploads with resizing and optimization","label":0}
{"text":"Design a compliance and audit logging system that meets GDPR and SOC2 requirements","label":0}
{"text":"Create a load balancing strategy for WebSocket connections with sticky sessions and failover","label":0}
{"text":"Help me architect a real-time analytics dashboard with sub-second query latency on petabyte data","label":0}
{"text":"Design a configuration management system for distributed applications with feature flags and gradual rollout","label":0}
{"text":"Develop a cost optimization strategy for a multi-cloud infrastructure with reserved and spot instances","label":0}
{"text":"Architect a billing and subscription management system with usage-based pricing and invoicing","label":0}
{"text":"Design a graph database schema for a knowledge graph with efficient traversal queries","label":0}
{"text":"Create a blue-green deployment strategy for stateful services with zero-downtime database migrations","label":0}
{"text":"Help me design a service mesh architecture with mTLS, traffic management, and observability","label":0}
{"text":"Architect a document storage system with versioning, access control, and full-text search","label":0}
{"text":"Design a machine learning model serving infrastructure with A/B testing and model versioning","label":0}
{"text":"Create a data governance framework for a regulated industry with data lineage and quality checks","label":0}
{"text":"Help me architect a geospatial data platform for real-time location tracking and route optimization","label":0}
{"text":"Design an event sourcing system with CQRS pattern for a banking application","label":0}
{"text":"Develop a capacity planning strategy for a rapidly growing SaaS platform with predictable scaling","label":0}
{"text":"Architect a federated identity system that integrates with multiple enterprise identity providers","label":0}
{"text":"Design a chaos engineering framework for testing system resilience in production","label":0}
{"text":"Create a data pipeline architecture that handles schema-on-read with data quality validation","label":0}
{"text":"Help me design an API gateway with request transformation, rate limiting, and circuit breaking","label":0}
{"text":"Architect a distributed tracing system for debugging requests across hundreds of microservices","label":0}
Loading
Loading