name project-careti description Guidelines for testing LLM API providers when adding or modifying support in Caret. Use when this capability is needed. metadata {"author":"caretive-ai"}
API Provider Testing Skill
Overview
Guidelines for testing LLM API providers when adding or modifying support in Caret.
Test Categories
1. Basic Conversation Test
Simple prompt → response verification
Streaming chunk reception
Token usage reporting
Example:
const response = await handler.createMessage ("System prompt" , [
{ role : 'user' , content : 'Hello' }
])
2. Tool Calling Test
Core verification for agentic capabilities.
Test Flow:
Send message with tool definitions
Verify tool_calls chunk received
Verify function name and arguments
Send tool result back
Verify final text response
Provider-Specific Formats:
Provider Tool Call Key Arguments Tool Result Key OpenAI tool_callsstring tool_call_idNaver Cloud toolCallsobject toolCallIdUpstage tool_callsstring tool_call_idGemini functionCallobject n/a (different format)
3. Timeout Test
Use AbortController with configurable timeout
Default: 60 seconds recommended
Verify timeout error is thrown correctly
4. Error Handling Test
Invalid API key → 401/403 error
Rate limiting → 429 error with retry
Empty response → specific error message
Test Script Template
Location: scripts/test-{provider}-api.js
const fs = require ('fs' )
const path = require ('path' )
const envPath = path.resolve (__dirname, '../.env' )
if (fs.existsSync (envPath)) {
fs.readFileSync (envPath, 'utf-8' ).split ('\n' ).forEach ((line ) => {
const match = line.match (/^([^=]+)=(.*)$/ )
if (match && !process.env [match[1 ]]) {
process.env [match[1 ]] = match[2 ]
}
})
}
async function testBasicConversation ( ) { ... }
async function testToolCalling ( ) { ... }
async function testToolResultFlow ( ) { ... }
async function testTimeout ( ) { ... }
async function main ( ) {
const results = {
basic : await testBasicConversation (),
: (),
: (),
}
. ( , results)
}
Existing Test Scripts
Script Provider Tests scripts/test-naver-cloud-api.jsNaver Cloud Basic, Timeout scripts/test-naver-tool-calling.jsNaver Cloud Tool calling, Tool flow scripts/test-upstage-api.jsUpstage Basic, Streaming scripts/test-glm47-streaming.jsGLM4.7 Thinking, Streaming
Key Files
File Purpose src/core/api/providers/{provider}.tsProvider handler src/core/api/transform/tool-call-processor.tsTool call parsing src/core/api/transform/stream.tsStream types src/core/api/retry.tsRetry decorator
Checklist for New Provider
Basic conversation works
Streaming chunks parse correctly
Tool calling triggers tool_calls type chunk
Tool result → final response flow works
Timeout with AbortController works
Error messages are clear
Token usage reported correctly
Integration test added to __tests__/
Mirroring Policy
.agents/와 .users/는 1:1 미러링 구조입니다.
이 파일 수정 시 .users/skills/api-provider-testing/SKILL.md도 동일하게 업데이트
.agents/는 영어(토큰 효율), .users/는 사용자/팀 언어(상세 설명)
참조: assets/agents_template/AGENTS.md의 Key Principles
Source: caretive-ai/project-careti — distributed by TomeVault .