Chrt 类型脚本库
Chrt TypeScript库提供了从TypeScript获取Chrt API的方便通道.
目录
安装
npm i -s @chrt-inc/typescript-sdk
参考文献
该图书馆的全部参考资料可供查阅 这里。 。 。 .
使用量
以下列方式证明和使用客户端:
import { ChrtClient } from "@chrt-inc/typescript-sdk";
const client = new ChrtClient({ token: "YOUR_TOKEN" });
await client.ai.rewriteV1({
text: "text",
});
请求和答复类型
SDK导出所有请求和响应类型为TypeScript接口. 只需用 以下命名空间:
import { Chrt } from "@chrt-inc/typescript-sdk";
const request: Chrt.AiRewriteReq = {
...
};
例外处理
当 API 返回一个非成功状态代码( 4xx 或 5xx 响应) 时, 以下错误的子类 将会被扔出.
import { ChrtError } from "@chrt-inc/typescript-sdk";
try {
await client.ai.rewriteV1(...);
} catch (err) {
if (err instanceof ChrtError) {
console.log(err.statusCode);
console.log(err.message);
console.log(err.body);
console.log(err.rawResponse);
}
}
二进制响应
您可以使用 BinaryResponse 类型,允许您选择如何消耗数据 :
const response = await client.chrtGpt.conversations.s3Objects.getV1(...);
const stream: ReadableStream<Uint8Array> = response.stream();
// const arrayBuffer: ArrayBuffer = await response.arrayBuffer();
// const blob: Blob = response.blob();
// const bytes: Uint8Array = response.bytes();
// You can only use the response body once, so you must choose one of the above methods.
// If you want to check if the response body has been used, you can use the following property.
const bodyUsed = response.bodyUsed;
对文件保存二进制响应
节点.js
可读结构(最高效)
import { createWriteStream } from 'fs'; import { Readable } from 'stream'; import { pipeline } from 'stream/promises'; const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const stream = response.stream(); const nodeStream = Readable.fromWeb(stream); const writeStream = createWriteStream('path/to/file'); await pipeline(nodeStream, writeStream);矩阵缓冲
import { writeFile } from 'fs/promises'; const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const arrayBuffer = await response.arrayBuffer(); await writeFile('path/to/file', Buffer.from(arrayBuffer));块
import { writeFile } from 'fs/promises'; const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const blob = await response.blob(); const arrayBuffer = await blob.arrayBuffer(); await writeFile('output.bin', Buffer.from(arrayBuffer));字节 (UIntArray8)
import { writeFile } from 'fs/promises'; const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const bytes = await response.bytes(); await writeFile('path/to/file', bytes);
阿宝
可读结构(最高效)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const stream = response.stream(); await Bun.write('path/to/file', stream);矩阵缓冲
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const arrayBuffer = await response.arrayBuffer(); await Bun.write('path/to/file', arrayBuffer);块
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const blob = await response.blob(); await Bun.write('path/to/file', blob);字节 (UIntArray8)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const bytes = await response.bytes(); await Bun.write('path/to/file', bytes);
德诺
可读结构(最高效)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const stream = response.stream(); const file = await Deno.open('path/to/file', { write: true, create: true }); await stream.pipeTo(file.writable);矩阵缓冲
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const arrayBuffer = await response.arrayBuffer(); await Deno.writeFile('path/to/file', new Uint8Array(arrayBuffer));块
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const blob = await response.blob(); const arrayBuffer = await blob.arrayBuffer(); await Deno.writeFile('path/to/file', new Uint8Array(arrayBuffer));字节 (UIntArray8)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const bytes = await response.bytes(); await Deno.writeFile('path/to/file', bytes);
浏览器
Blob( 效率最高)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const blob = await response.blob(); const url = URL.createObjectURL(blob); // trigger download const a = document.createElement('a'); a.href = url; a.download = 'filename'; a.click(); URL.revokeObjectURL(url);可读结构
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const stream = response.stream(); const reader = stream.getReader(); const chunks = []; while (true) { const { done, value } = await reader.read(); if (done) break; chunks.push(value); } const blob = new Blob(chunks); const url = URL.createObjectURL(blob); // trigger download const a = document.createElement('a'); a.href = url; a.download = 'filename'; a.click(); URL.revokeObjectURL(url);矩阵缓冲
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const arrayBuffer = await response.arrayBuffer(); const blob = new Blob([arrayBuffer]); const url = URL.createObjectURL(blob); // trigger download const a = document.createElement('a'); a.href = url; a.download = 'filename'; a.click(); URL.revokeObjectURL(url);字节 (UIntArray8)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const bytes = await response.bytes(); const blob = new Blob([bytes]); const url = URL.createObjectURL(blob); // trigger download const a = document.createElement('a'); a.href = url; a.download = 'filename'; a.click(); URL.revokeObjectURL(url);
将二进制响应转换为文本
可读结构
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const stream = response.stream(); const text = await new Response(stream).text();
矩阵缓冲
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const arrayBuffer = await response.arrayBuffer(); const text = new TextDecoder().decode(arrayBuffer);
块
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const blob = await response.blob(); const text = await blob.text();
字节 (UIntArray8)
const response = await client.chrtGpt.conversations.s3Objects.getV1(...); const bytes = await response.bytes(); const text = new TextDecoder().decode(bytes);
高级
其他信头
如果您希望作为请求的一部分发送额外的信头,请使用 headers 请求选项.
const response = await client.ai.rewriteV1(..., {
headers: {
'X-Custom-Header': 'custom value'
}
});
其它查询字符串参数
如果您希望作为请求的一部分发送额外的查询字符串参数,请使用 queryParams 请求选项.
const response = await client.ai.rewriteV1(..., {
queryParams: {
'customQueryParamKey': 'custom query param value'
}
});
检索
SDK是用有指数回放的自动回放装置. 申请要等会再审 由于请求被认为可以重试,且重试的次数没有超过所配置的 重试限制( 默认: 2) .
当返回以下任一 HTTP 状态代码时, 请求被视为可重试 :
- 408 (简体中文) (超时)
- 429个 (太多请求)
- 第5XX条 (内部服务器出错)
使用 maxRetries 请求选项来配置此行为.
const response = await client.ai.rewriteV1(..., {
maxRetries: 0 // override maxRetries at the request level
});
超时
SDK默认为60第二次超时. 使用 timeoutInSeconds 选项来配置此行为.
const response = await client.ai.rewriteV1(..., {
timeoutInSeconds: 30 // override timeout to 30s
});
中止请求
SDK允许用户在任何时刻通过一个中止信号来中止请求.
const controller = new AbortController();
const response = await client.ai.rewriteV1(..., {
abortSignal: controller.signal
});
controller.abort(); // aborts the request
访问原始响应数据
SDK通过下列方式提供原始响应数据,包括信头: .withRawResponse() 方法.
这个 .withRawResponse() 方法返回给一个带有 data (单位:千美元) rawResponse 属性.
const { data, rawResponse } = await client.ai.rewriteV1(...).withRawResponse();
console.log(data);
console.log(rawResponse.headers['X-My-Header']);
运行时间相容性
SDK工作时间如下:
- 节点.js 18+
- 维塞尔
- 云花岗工人
- 德诺v1.25+
- 1.0+号舱
- 原生反应
自定义获取客户端
SDK为您提供了自定义 HTTP 客户端/ 获取功能的方法 。 如果你正在运行在一个 不支持的环境,这为您提供了一个打破玻璃并确保SDK工作的方法.
import { ChrtClient } from "@chrt-inc/typescript-sdk";
const client = new ChrtClient({
...
fetcher: // provide your implementation here
});
捐款
虽然我们重视对SDK的开源贡献,但这个库是程序生成的. 直接给这个图书馆增加的代码 得转到我们一代人的代码上, 否则,它们将被覆盖 在下一次产生的释放。 随便打开公关吧 是一个概念的证明, 但知道我们将无法 合并它作为一个。 我们建议开放 先和我们讨论一个问题!
另一方面,对 " README " 的贡献总是非常受欢迎的!