@pmate/llm-agent
v1.0.0
Published
Standalone prompt agent powered by OpenAI SDK.
Readme
llm-agent
Standalone prompt agent powered by OpenAI SDK.
Environment
HUB_ENDPOINTrequired, agent hub websocket endpoint.AGENT_SERVER_IDrequired, agent identity for auth (example:agent:summary).OPENAI_API_KEYoptional, required only when mapped provider is OpenAI.GEMINI_API_KEYoptional, required when mapped provider is Gemini.QWEN_API_TOKENoptional, required when mapped provider is Qwen.QWEN_BASE_URLoptional, required when mapped provider is Qwen.PMATE_TOKENoptional.PROXY_URLoptional, defaulthttp://localhost:7001.- OpenAI base URL is derived as
${PROXY_URL}/openai/v1. - Gemini base URL is derived as
${PROXY_URL}/gemini.
- OpenAI base URL is derived as
HEARTBEAT_INTERVAL_MSoptional, default30000.APP_LOG_ENABLEDoptional, defaulttrue.APP_LOG_NAMESPACEoptional, defaultpmate.APP_LOG_APPoptional, defaultllm-agent.APP_LOG_INPUT_PREVIEW_CHARSoptional, default200.APP_LOG_OUTPUT_PREVIEW_CHARSoptional, default300.BLOCKCHAIN_CHAIN_ID/BLOCKCHAIN_BASE_URL/INDEXER_BASE_URLrequired whenAPP_LOG_ENABLED=true.
Model routing is fixed in /Users/ramroll/dev/pmate/pmate-mono/apps/llm-agent/src/model.def.ts:
model + responseType -> AgentModel[]- runtime tries candidates in order with unhealthy-route skipping and same-tier fallback.
Input Payload
client.prompt({ agentId, payload }) payload is variable values only.
The agent template (instruction and prompt) uses {{var_name}} placeholders.
payload must provide values for those variables.
Record<string, unknown>Output shape:
{
type: "text" | "json"
content: any
}Run
pnpm --filter @pmate/llm-agent devC2C (Vitest)
pnpm --filter @pmate/llm-agent test:c2cPM2
pnpm --filter @pmate/llm-agent pm2:start
pnpm --filter @pmate/llm-agent pm2:logs