mirror of
https://github.com/mintlify/docs.git
synced 2026-09-14 13:35:46 +08:00
bc4b00a932
Co-authored-by: locadex-agent[bot] <217277504+locadex-agent[bot]@users.noreply.github.com>
115 lines
3.3 KiB
Plaintext
115 lines
3.3 KiB
Plaintext
---
|
||
openapi: /zh/discovery-openapi.json POST /v2/assistant/{domain}/message
|
||
keywords:
|
||
[
|
||
"assistant message",
|
||
"embed",
|
||
"chat",
|
||
"integrate",
|
||
"v2",
|
||
"ai sdk v5",
|
||
"ai sdk v6"
|
||
]
|
||
---
|
||
|
||
<Info>
|
||
assistant 消息 v2 端点兼容 **AI SDK v5+**。如果你正在使用 AI SDK v4,请改用 [assistant 消息 v1 端点](/zh/api-reference/assistant/create-assistant-message)。
|
||
</Info>
|
||
|
||
<div id="integration-with-usechat">
|
||
## 与 `useChat` 集成
|
||
</div>
|
||
|
||
Vercel 的 AI SDK 提供的 `useChat` hook 是在你的应用程序中集成 assistant API 的推荐方式。
|
||
|
||
<Steps>
|
||
<Step title="安装 AI SDK">
|
||
```bash
|
||
npm i ai@^6 @ai-sdk/react
|
||
```
|
||
</Step>
|
||
|
||
<Step title="使用 hook">
|
||
```tsx
|
||
import { useState } from "react";
|
||
import { useChat } from "@ai-sdk/react";
|
||
import { DefaultChatTransport } from "ai";
|
||
|
||
function MyComponent({ domain }) {
|
||
const [input, setInput] = useState("");
|
||
|
||
const { messages, sendMessage } = useChat({
|
||
transport: new DefaultChatTransport({
|
||
api: `https://api.mintlify.com/discovery/v2/assistant/${domain}/message`,
|
||
headers: {
|
||
Authorization: `Bearer ${process.env.PUBLIC_MINTLIFY_ASSISTANT_KEY}`,
|
||
},
|
||
body: {
|
||
fp: "anonymous",
|
||
retrievalPageSize: 5,
|
||
context: [
|
||
{
|
||
type: "code",
|
||
value: 'const example = "code snippet";',
|
||
elementId: "code-block-1",
|
||
},
|
||
],
|
||
},
|
||
}),
|
||
});
|
||
|
||
return (
|
||
<div>
|
||
{messages.map((message) => (
|
||
<div key={message.id}>
|
||
{message.role === "user" ? "User: " : "Assistant: "}
|
||
{message.parts
|
||
.filter((part) => part.type === "text")
|
||
.map((part) => part.text)
|
||
.join("")}
|
||
</div>
|
||
))}
|
||
<form
|
||
onSubmit={(e) => {
|
||
e.preventDefault();
|
||
if (input.trim()) {
|
||
sendMessage({ text: input });
|
||
setInput("");
|
||
}
|
||
}}
|
||
>
|
||
<input value={input} onChange={(e) => setInput(e.target.value)} />
|
||
<button type="submit">Send</button>
|
||
</form>
|
||
</div>
|
||
);
|
||
}
|
||
```
|
||
|
||
**必填配置:**
|
||
|
||
* `transport` - 使用 `DefaultChatTransport` 来配置 API 连接。
|
||
* `body.fp` - 指纹标识符(使用 `'anonymous'` 或唯一的用户标识符)。
|
||
* `body.retrievalPageSize` - 要使用的搜索结果数量(推荐:5)。
|
||
|
||
**可选配置:**
|
||
|
||
* `body.context` - 提供给 AI 助手的上下文信息数组。每个 context 对象包含:
|
||
* `type` - `'code'` 或 `'textSelection'` 之一。
|
||
* `value` - 代码片段或选中的文本内容。
|
||
* `path`(可选)- 源文件或页面的路径。
|
||
* `elementId`(可选)- 包含该 context 的 UI 元素标识符。
|
||
</Step>
|
||
</Steps>
|
||
|
||
更多详情参见 AI SDK 文档中的 [useChat](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) 和 [Transport](https://ai-sdk.dev/docs/ai-sdk-ui/transport)。
|
||
|
||
<div id="rate-limits">
|
||
## 速率限制
|
||
</div>
|
||
|
||
AI 助手 API 有以下限制:
|
||
|
||
* 每个 key 每月最多调用 10,000 次
|
||
* 每个 Mintlify 组织每小时最多 10,000 个请求
|
||
* 每个 IP 地址每天最多 10,000 个请求 |