@autobe/agent
Version:
AI backend server code generator
128 lines (121 loc) • 5.74 kB
text/typescript
import OpenAI from "openai";
/**
* Interface representing AI vendor configuration for the AutoBeAgent.
*
* Defines the connection parameters and settings required to integrate with AI
* service providers that power the vibe coding pipeline. While utilizing the
* OpenAI SDK as the connection interface, this configuration supports various
* LLM vendors beyond OpenAI through flexible endpoint and authentication
* configuration, enabling integration with Claude, DeepSeek, Meta Llama, and
* other providers that follow OpenAI-compatible API patterns.
*
* The vendor configuration determines the AI capabilities available throughout
* the entire automated development workflow, from requirements analysis and
* database design through API specification, testing, and final implementation.
* Different vendors may offer varying performance characteristics, cost
* structures, and feature support that can be optimized for specific vibe
* coding needs.
*
* Concurrent request management is built-in to prevent API rate limiting and
* optimize resource utilization across multiple development phases and parallel
* operations within the vibe coding pipeline.
*
* @author Samchon
*/
export interface IAutoBeVendor {
/**
* OpenAI SDK instance configured for the target AI vendor.
*
* Provides the API connection interface used by the AutoBeAgent to
* communicate with AI services. While this uses the OpenAI SDK, it can be
* configured to connect with various LLM providers by setting the appropriate
* `baseURL` and authentication credentials. The SDK serves as a universal
* connector that abstracts the underlying API communication protocols.
*
* For non-OpenAI vendors, configure the SDK with the vendor's API endpoint
* and authentication requirements to enable seamless integration with the
* vibe coding system.
*/
api: OpenAI;
/**
* Specific model identifier to use for AI operations.
*
* Specifies the exact model name or identifier that should be used for vibe
* coding tasks. Supports both official OpenAI chat models and custom model
* identifiers for third-party hosting services, cloud providers, or
* alternative LLM vendors. The model choice significantly impacts the
* quality, performance, and cost of the automated development process.
*
* Examples include "gpt-4", "gpt-3.5-turbo" for OpenAI, or vendor-specific
* identifiers like "claude-3-sonnet", "deepseek-chat-v3", "llama3.3-70b" when
* using alternative providers through compatible APIs.
*/
model: OpenAI.ChatModel | ({} & string);
/**
* Optional human-readable label for this vendor/model configuration.
*
* This is a display or grouping name that is distinct from the underlying
* `model` identifier, and is intended for use in logs, UIs, selection menus,
* or archive views where a more descriptive name is helpful (for example,
* "Primary GPT-4", "Fast Drafting Model", or "Internal Llama Cluster").
*
* When omitted, callers should fall back to displaying or logging the `model`
* value itself, or another sensible default derived from the model
* identifier.
*/
label?: string | undefined;
/**
* Optional request configuration for API calls.
*
* Additional request options that will be applied to all API calls made
* through the OpenAI SDK. This can include custom headers, timeouts, retry
* policies, or other HTTP client configuration that may be required for
* specific vendor integrations or enterprise environments.
*
* These options provide fine-grained control over the API communication
* behavior and can be used to optimize performance or meet specific
* infrastructure requirements.
*/
options?: OpenAI.RequestOptions | undefined;
/**
* Maximum number of concurrent API requests allowed.
*
* Controls the concurrency level for AI API calls to prevent rate limiting,
* manage resource consumption, and optimize system performance. The vibe
* coding pipeline may make multiple parallel requests during development
* phases, and this setting ensures controlled resource utilization.
*
* A reasonable default provides balanced performance while respecting typical
* API rate limits. Lower values reduce resource consumption but may slow
* development progress, while higher values can improve performance but risk
* hitting rate limits or overwhelming the AI service.
*
* Set to undefined to disable concurrency limiting, allowing unlimited
* parallel requests (use with caution based on your API limits and
* infrastructure capacity).
*
* @default 16
*/
semaphore?: number | undefined;
/**
* Indicates whether this vendor/model supports explicit tool choice control.
*
* When set to `true`, the agent may pass the `tool_choice` parameter with a
* value of `"required"` (or other explicit values) for models that implement
* OpenAI-style tool calling. This allows the agent to force the model to call
* one of the provided tools when appropriate.
*
* When set to `false`, the agent will avoid sending `tool_choice` in a way
* that forces tool invocation, and will instead rely on the model's default
* behavior or omit tool-choice configuration entirely. This should be used
* for vendors or models that do not understand, partially implement, or are
* unstable with the `tool_choice` parameter.
*
* This flag is necessary so that a single agent implementation can work
* across multiple vendors and models with differing levels of tool-calling
* support, without causing API errors or unexpected behavior.
*
* @default true
*/
useToolChoice?: boolean;
}