JavaScript/TypeScript SDK for inference.sh - run AI apps, build agents, integrate 150+ models. Package: @inferencesh/sdk (npm install). Full TypeScript support, streaming, file uploads. Build agents with template or ad-hoc patterns, tool builder API, skills, human approval. Use for: JavaScript integration, TypeScript, Node.js, React, Next.js, frontend apps. Triggers: javascript sdk, typescript sdk, npm install, node.js api, js client, react ai, next.js ai, frontend sdk, @inferencesh/sdk, typescr
使用 inference.sh JavaScript/TypeScript SDK 构建 AI 应用。

bash
npm install @inferencesh/sdk
typescript
import { inference } from @inferencesh/sdk;
const client = inference({ apiKey: infyourkey });
// 运行 AI 应用
const result = await client.run({
app: infsh/flux-schnell,
input: { prompt: 山峦上的日落 }
});
console.log(result.output);
bash
npm install @inferencesh/sdk
要求: Node.js 18.0.0+(或支持 fetch 的现代浏览器)
typescript
import { inference } from @inferencesh/sdk;
// 直接使用 API 密钥
const client = inference({ apiKey: infyourkey });
// 从环境变量获取(推荐)
const client = inference({ apiKey: process.env.INFERENCEAPIKEY });
// 前端应用(使用代理)
const client = inference({ proxyUrl: /api/inference/proxy });
获取 API 密钥:设置 → API 密钥 → 创建 API 密钥
typescript
const result = await client.run({
app: infsh/flux-schnell,
input: { prompt: 一只猫宇航员 }
});
console.log(result.status); // completed
console.log(result.output); // 输出数据
typescript
const task = await client.run({
app: google/veo-3-1-fast,
input: { prompt: 无人机飞越山峦 }
}, { wait: false });
console.log(任务 ID: ${task.id});
// 稍后使用 client.getTask(task.id) 检查
typescript
const stream = await client.run({
app: google/veo-3-1-fast,
input: { prompt: 日落时分的海浪 }
}, { stream: true });
for await (const update of stream) {
console.log(状态: ${update.status});
if (update.logs?.length) {
console.log(update.logs.at(-1));
}
}
| 参数 | 类型 | 描述 |
|---|---|---|
| app | string | 应用 ID(命名空间/名称@版本) |
| input |
typescript
const result = await client.run({
app: image-processor,
input: {
image: /path/to/image.png // 自动上传
}
});
typescript
// 基本上传
const file = await client.uploadFile(/path/to/image.png);
// 带选项
const file = await client.uploadFile(/path/to/image.png, {
filename: custom_name.png,
contentType: image/png,
public: true
});
const result = await client.run({
app: image-processor,
input: { image: file.uri }
});
typescript
const input = document.querySelector(input[type=file]);
const file = await client.uploadFile(input.files[0]);
跨多次调用保持工作进程活跃:
typescript
// 启动新会话
const result = await client.run({
app: my-app,
input: { action: init },
session: new,
session_timeout: 300 // 5 分钟
});
const sessionId = result.session_id;
// 在同一会话中继续
const result2 = await client.run({
app: my-app,
input: { action: process },
session: sessionId
});
使用工作区中的预构建 Agent:
typescript
const agent = client.agent(my-team/support-agent@latest);
// 发送消息
const response = await agent.sendMessage(你好!);
console.log(response.text);
// 多轮对话
const response2 = await agent.sendMessage(告诉我更多);
// 重置对话
agent.reset();
// 获取聊天历史
const chat = await agent.getChat();
以编程方式创建自定义 Agent:
typescript
import { tool, string, number, appTool } from @inferencesh/sdk;
// 定义工具
const calculator = tool(calculate)
.describe(执行计算)
.param(expression, string(数学表达式))
.build();
const imageGen = appTool(generate_image, infsh/flux-schnell@latest)
.describe(生成图像)
.param(prompt, string(图像描述))
.build();
// 创建 Agent
const agent = client.agent({
core_app: { ref: infsh/claude-sonnet-4@latest },
system_prompt: 你是一个乐于助人的助手。,
tools: [calculator, imageGen],
temperature: 0.7,
max_tokens: 4096
});
const response = await agent.sendMessage(25 * 4 等于多少?);
| 模型 | 应用引用 |
|---|---|
| Claude Sonnet 4 | infsh/claude-sonnet-4@latest |
| Claude 3.5 Haiku |
typescript
import {
string, number, integer, boolean,
enumOf, array, obj, optional
} from @inferencesh/sdk;
const name = string(用户姓名);
const age = integer(年龄(岁));
const score = number(分数 0-1);
const active = boolean(是否活跃);
const priority = enumOf([低, 中, 高], 优先级);
const tags = array(string(标签), 标签列表);
const address = obj({
street: string(街道),
city: string(城市),
zip: optional(string(邮编))
}, 地址);
typescript
const greet = tool(greet)
.display(问候用户)
.describe(按姓名问候用户)
.param(name, string(要问候的姓名))
.requireApproval()
.build();
typescript
const generate = appTool(generate_image, infsh/flux-schnell@latest)
.describe(根据文本生成图像)
.param(prompt, string(图像描述))
.setup({ model: schnell })
.input({ steps: 20 })
.requireApproval()
.build();
typescript
import { agentTool } from @inferencesh/sdk;
const researcher = agentTool(research, my-org/researcher@v1)
.describe(研究一个主题)
.param(topic, string(要研究的主题))
.build();
typescript
import { webhookTool } from @inferencesh/sdk;
const notify = webhookTool(slack, https://hooks.slack.com/...)
.describe(发送 Slack 通知)
.secret(SLACK_SECRET)
.param(channel, string(频道))
.param(message, string(消息))
.build();
typescript
import { internalTools } from @inferencesh/sdk;
const config = internalTools()
.plan()
.memory()
.webSearch(true)
.codeExecution(true)
.imageGeneration({
enabled: true,
appRef: infsh/flux@latest
})
.build();
const agent = client.agent({
core_app: { ref: infsh/claude-sonnet-4@latest },
internal_tools: config
});
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 javascript-sdk-1776352471 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 javascript-sdk-1776352471 技能
skillhub install javascript-sdk-1776352471
文件大小: 29.8 KB | 发布时间: 2026-4-17 14:41