tool-function-schema-designer

安装量: 35
排名: #19643

安装

npx skills add https://github.com/patricio0312rev/skills --skill tool-function-schema-designer
Tool/Function Schema Designer
Design robust tool schemas that LLMs can reliably invoke.
Function Schema Format
// OpenAI function calling format
const
searchDocsTool
=
{
type
:
"function"
,
function
:
{
name
:
"search_documentation"
,
description
:
"Search through product documentation using semantic search. Use this when the user asks about features, how-tos, or troubleshooting."
,
parameters
:
{
type
:
"object"
,
properties
:
{
query
:
{
type
:
"string"
,
description
:
"The search query, phrased as a question or keywords"
,
}
,
filters
:
{
type
:
"object"
,
properties
:
{
category
:
{
type
:
"string"
,
enum
:
[
"api"
,
"guides"
,
"tutorials"
,
"troubleshooting"
]
,
description
:
"Filter by documentation category"
,
}
,
version
:
{
type
:
"string"
,
description
:
"Filter by product version (e.g., 'v2.0')"
,
}
,
}
,
}
,
max_results
:
{
type
:
"integer"
,
minimum
:
1
,
maximum
:
10
,
default
:
5
,
description
:
"Maximum number of results to return"
,
}
,
}
,
required
:
[
"query"
]
,
}
,
}
,
}
;
Typed Interfaces
// TypeScript types matching schema
interface
SearchDocsParams
{
query
:
string
;
filters
?
:
{
category
?
:
"api"
|
"guides"
|
"tutorials"
|
"troubleshooting"
;
version
?
:
string
;
}
;
max_results
?
:
number
;
}
// Implementation
async
function
search_documentation
(
params
:
SearchDocsParams
)
:
Promise
<
SearchResult
[
]
>
{
const
{
query
,
filters
=
{
}
,
max_results
=
5
}
=
params
;
// Implementation
return
await
vectorStore
.
search
(
query
,
{
filter
:
filters
,
limit
:
max_results
,
}
)
;
}
Validation Strategy
import
{
z
}
from
"zod"
;
// Zod schema for runtime validation
const
searchDocsSchema
=
z
.
object
(
{
query
:
z
.
string
(
)
.
min
(
1
,
"Query cannot be empty"
)
,
filters
:
z
.
object
(
{
category
:
z
.
enum
(
[
"api"
,
"guides"
,
"tutorials"
,
"troubleshooting"
]
)
.
optional
(
)
,
version
:
z
.
string
(
)
.
optional
(
)
,
}
)
.
optional
(
)
,
max_results
:
z
.
number
(
)
.
int
(
)
.
min
(
1
)
.
max
(
10
)
.
default
(
5
)
,
}
)
;
// Validate before execution
function
validateAndExecute
(
toolName
:
string
,
params
:
unknown
)
{
const
validated
=
searchDocsSchema
.
parse
(
params
)
;
return
search_documentation
(
validated
)
;
}
Tool Registry
export
const
TOOLS
=
{
search_documentation
:
{
schema
:
searchDocsTool
,
implementation
:
search_documentation
,
validator
:
searchDocsSchema
,
}
,
create_ticket
:
{
schema
:
createTicketTool
,
implementation
:
create_ticket
,
validator
:
createTicketSchema
,
}
,
// ... more tools
}
;
// Execute tool safely
async
function
executeTool
(
name
:
string
,
params
:
unknown
)
{
const
tool
=
TOOLS
[
name
]
;
if
(
!
tool
)
throw
new
Error
(
`
Unknown tool:
${
name
}
`
)
;
const
validated
=
tool
.
validator
.
parse
(
params
)
;
return
tool
.
implementation
(
validated
)
;
}
Example Calls
// Example 1: Simple search
{
"name"
:
"search_documentation"
,
"parameters"
:
{
"query"
:
"How do I authenticate API requests?"
}
}
// Example 2: With filters
{
"name"
:
"search_documentation"
,
"parameters"
:
{
"query"
:
"rate limiting"
,
"filters"
:
{
"category"
:
"api"
,
"version"
:
"v2.0"
}
,
"max_results"
:
3
}
}
Error Handling
interface
ToolResult
{
success
:
boolean
;
data
?
:
any
;
error
?
:
{
code
:
string
;
message
:
string
;
}
;
}
async
function
safeExecuteTool
(
name
:
string
,
params
:
unknown
)
:
Promise
<
ToolResult
>
{
try
{
const
data
=
await
executeTool
(
name
,
params
)
;
return
{
success
:
true
,
data
}
;
}
catch
(
error
)
{
if
(
error
instanceof
z
.
ZodError
)
{
return
{
success
:
false
,
error
:
{
code
:
"VALIDATION_ERROR"
,
message
:
`
Invalid parameters:
${
error
.
message
}
`
,
}
,
}
;
}
return
{
success
:
false
,
error
:
{
code
:
"EXECUTION_ERROR"
,
message
:
error
.
message
,
}
,
}
;
}
}
Best Practices
Clear descriptions
Explain when to use the tool
Specific types
Use enums, ranges, patterns
Sensible defaults
Reduce required parameters
Validate rigorously
Don't trust LLM output
Error messages
Help LLM correct mistakes
Example calls
Show success cases
Type safety
TypeScript interfaces Output Checklist JSON schema defined TypeScript interface Validation with Zod Implementation function Error handling Example calls (3+) Tool registry entry Documentation
返回排行榜