useToolCall

AI 聊天工具定义 Composable,用于配置工具调用的显示标签。

概述

useToolCall 提供 AI 聊天功能中可用的工具定义。当 AI 助手调用工具时,会根据此配置显示相应的标签信息,提升用户体验。

工具定义支持两种形式:

  • 静态字符串:直接显示固定文本
  • 动态函数:根据工具参数生成描述文本

使用示例

在 AI 聊天组件中使用

<script setup lang="ts">
const { tools } = useToolCall()

function getToolLabel(toolName: string, args?: any): string {
  const label = tools[toolName]

  if (!label) {
    return toolName
  }

  return typeof label === 'function' ? label(args) : label
}

// 示例:获取工具标签
console.log(getToolLabel('list-pages'))
// 输出:列出所有文档页面

console.log(getToolLabel('get-page', { path: '/docs/api' }))
// 输出:检索 /docs/api
</script>

扩展工具定义

如果需要自定义工具定义,可以在应用层覆盖此 composable:

composables/useToolCall.ts
export function useToolCall() {
  const tools: Record<string, string | ((args: any) => string)> = {
    // 静态工具标签
    'list-pages': '列出所有文档页面',
    'search-docs': '搜索文档内容',

    // 动态工具标签
    'get-page': (args: any) => `检索 ${args?.path || '页面'}`,
    'update-content': (args: any) => {
      const action = args?.action || '更新'
      const target = args?.target || '内容'
      return `${action}${target}`
    }
  }

  return {
    tools
  }
}

API

useToolCall()

返回工具定义对象,包含所有可用的 AI 工具及其显示标签。

返回值

tools
Record<string, string | ((args: any) => string)>
工具定义映射对象,键为工具名称,值可以是:
  • 字符串:直接显示的静态标签
  • 函数:接收工具参数并返回动态标签的函数

Changelog

2c361 — refactor: 重构 useTools 为 useToolCall 并简化 API

Copyright © 2024 - 2026