Co-Pilot / 辅助式
更新于 a month ago

tools

Aassistant-ui
0.0k
assistant-ui/skills/assistant-ui/skills/tools
76
Agent 评分

💡 摘要

该技能促进了在assistant-ui中为LLM工具的注册和UI渲染。

🎯 适合人群

集成LLM工具的开发人员AI应用程序的UI/UX设计师监督AI功能的产品经理记录AI工具的技术写作人员

🤖 AI 吐槽:看起来很能打,但别让配置把人劝退。

安全分析中风险

风险:Medium。建议检查:是否发起外网请求(SSRF/数据外发);文件读写范围与路径穿越风险。以最小权限运行,并在生产环境启用前审计代码与依赖。


name: tools description: Guide for tool registration and tool UI in assistant-ui. Use when implementing LLM tools, tool call rendering, or human-in-the-loop patterns. version: 0.0.1 license: MIT

assistant-ui Tools

Always consult assistant-ui.com/llms.txt for latest API.

Tools let LLMs trigger actions with custom UI rendering.

References

Tool Types

Where does the tool execute?
├─ Backend (LLM calls API) → AI SDK tool()
│  └─ Want custom UI? → makeAssistantToolUI
└─ Frontend (browser-only) → makeAssistantTool
   └─ Want custom UI? → makeAssistantToolUI

Backend Tool with UI

// Backend (app/api/chat/route.ts) import { tool, stepCountIs } from "ai"; import { z } from "zod"; const tools = { get_weather: tool({ description: "Get weather for a city", inputSchema: z.object({ city: z.string() }), execute: async ({ city }) => ({ temp: 22, city }), }), }; const result = streamText({ model: openai("gpt-4o"), messages, tools, stopWhen: stepCountIs(5), });
// Frontend import { makeAssistantToolUI } from "@assistant-ui/react"; const WeatherToolUI = makeAssistantToolUI({ toolName: "get_weather", render: ({ args, result, status }) => { if (status === "running") return <div>Loading weather...</div>; return <div>{result?.city}: {result?.temp}°C</div>; }, }); // Register in app <AssistantRuntimeProvider runtime={runtime}> <WeatherToolUI /> <Thread /> </AssistantRuntimeProvider>

Frontend-Only Tool

import { makeAssistantTool } from "@assistant-ui/react"; import { z } from "zod"; const CopyTool = makeAssistantTool({ toolName: "copy_to_clipboard", parameters: z.object({ text: z.string() }), execute: async ({ text }) => { await navigator.clipboard.writeText(text); return { success: true }; }, }); <AssistantRuntimeProvider runtime={runtime}> <CopyTool /> <Thread /> </AssistantRuntimeProvider>

API Reference

// makeAssistantToolUI props interface ToolUIProps { toolCallId: string; toolName: string; args: Record<string, unknown>; argsText: string; result?: unknown; status: "running" | "complete" | "incomplete" | "requires-action"; submitResult: (result: unknown) => void; // For interactive tools }

Human-in-the-Loop

const DeleteToolUI = makeAssistantToolUI({ toolName: "delete_file", render: ({ args, status, submitResult }) => { if (status === "requires-action") { return ( <div> <p>Delete {args.path}?</p> <button onClick={() => submitResult({ confirmed: true })}>Confirm</button> <button onClick={() => submitResult({ confirmed: false })}>Cancel</button> </div> ); } return <div>File deleted</div>; }, });

Common Gotchas

Tool UI not rendering

  • toolName must match exactly (case-sensitive)
  • Register UI inside AssistantRuntimeProvider

Tool not being called

  • Check tool description is clear
  • Use stopWhen: stepCountIs(n) to allow multi-step

Result not showing

  • Tool must return a value
  • Check status === "complete" before accessing result
五维分析
清晰度8/10
创新性6/10
实用性9/10
完整性8/10
可维护性7/10
优缺点分析

优点

  • 工具注册的清晰结构
  • 支持后端和前端工具
  • 提供人机交互模式

缺点

  • 缺乏所有工具类型的详细示例
  • 复杂工具可能需要额外设置
  • 关于错误处理的信息有限

相关技能

pytorch

S
toolCode Lib / 代码库
92/ 100

“它是深度学习的瑞士军刀,但祝你好运能从47种安装方法里找到那个不会搞崩你系统的那一个。”

agno

S
toolCode Lib / 代码库
90/ 100

“它承诺成为智能体领域的Kubernetes,但得看开发者有没有耐心学习又一个编排层。”

nuxt-skills

S
toolCo-Pilot / 辅助式
90/ 100

“这本质上是一份组织良好的小抄,能把你的 AI 助手变成一只 Nuxt 框架的复读机。”

免责声明:本内容来源于 GitHub 开源项目,仅供展示和评分分析使用。

版权归原作者所有 assistant-ui.