一键导入
create-adapter
Create a new model adapter for agentick. Use when asked to add support for a new model provider (Anthropic, Mistral, Cohere, etc).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create a new model adapter for agentick. Use when asked to add support for a new model provider (Anthropic, Mistral, Cohere, etc).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create a new agentick tool using createTool. Use when asked to add a tool, create a tool, or implement tool functionality.
Add a new package to the agentick monorepo. Use when creating a new @agentick/* package.
Create a new agentick lifecycle hook or custom hook. Use when asked to add a hook, create reactive behavior, or implement lifecycle logic.
Build, typecheck, and test the agentick monorepo. Use when asked to verify changes, run checks, or ensure nothing is broken.
Test an agentick agent with mock model responses. Use when asked to write tests, test an agent, or verify agent behavior.
Create a new agentick JSX component. Use when asked to add a component, create a UI primitive, or build a reusable agent building block.
| name | create-adapter |
| description | Create a new model adapter for agentick. Use when asked to add support for a new model provider (Anthropic, Mistral, Cohere, etc). |
Model adapters translate between agentick's compiled context and a model provider's API.
mkdir -p packages/adapters/my-provider/src
packages/adapters/my-provider/package.json:{
"name": "@agentick/my-provider",
"version": "0.0.1",
"type": "module",
"main": "src/index.ts",
"exports": {
".": "./src/index.ts"
},
"dependencies": {
"@agentick/core": "workspace:*",
"@agentick/shared": "workspace:*"
},
"peerDependencies": {
"my-provider-sdk": "^1.0.0"
}
}
packages/adapters/my-provider/tsconfig.json:{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": ["src"]
}
packages/adapters/my-provider/src/index.ts:import { createAdapter } from "@agentick/core/model";
export interface MyProviderConfig {
model: string;
temperature?: number;
maxTokens?: number;
apiKey?: string;
}
export const MyProviderModel = createAdapter({
metadata: {
id: "my-provider",
provider: "my-provider",
type: "language",
},
prepareInput(input, config: MyProviderConfig) {
// Transform CompiledStructure → provider-specific request format
return {
model: config.model,
messages: convertMessages(input.messages),
tools: convertTools(input.tools),
temperature: config.temperature,
max_tokens: config.maxTokens,
};
},
processOutput(output) {
// Transform provider response → ModelOutput
return {
messages: [
{
role: "assistant",
content: [{ type: "text", text: output.content }],
},
],
usage: {
inputTokens: output.usage?.input_tokens ?? 0,
outputTokens: output.usage?.output_tokens ?? 0,
},
stopReason: mapStopReason(output.stop_reason),
};
},
async execute(input) {
// Non-streaming API call
const client = new MyProviderClient({ apiKey: input.apiKey });
return await client.chat(input);
},
async *executeStream(input) {
// Streaming API call — yield raw provider chunks
const client = new MyProviderClient({ apiKey: input.apiKey });
for await (const chunk of client.chatStream(input)) {
yield chunk;
}
},
mapChunk(chunk) {
// Transform provider chunk → AdapterDelta (or null to skip)
if (chunk.type === "content_block_delta") {
return { type: "text", delta: chunk.delta.text };
}
if (chunk.type === "tool_use") {
return { type: "tool_call", name: chunk.name, input: chunk.input };
}
return null; // Skip irrelevant chunks
},
});
// Export lowercase factory (convention)
export const myProvider = MyProviderModel;
createAdapter returns a ModelClass — both a JSX component and a factory function.// JSX (best practice — dynamic, conditional):
<MyProviderModel model="my-model-v1" temperature={0.7} />;
// Factory:
const model = myProvider({ model: "my-model-v1" });
// With createAgent:
const agent = createAgent({ model: myProvider({ model: "my-model-v1" }) });
Study these existing adapters:
| Adapter | Path | Notes |
|---|---|---|
| OpenAI | packages/adapters/openai/src/ | Native API, streaming with separate usage chunk |
packages/adapters/google/src/ | Gemini API | |
| AI SDK | packages/adapters/ai-sdk/src/ | Wraps Vercel AI SDK LanguageModel |
createAdapter: packages/core/src/model/packages/adapters/README.mdpackages/adapters/*/src/index.tspnpm install
pnpm --filter @agentick/my-provider typecheck
pnpm --filter @agentick/my-provider test