Initial import
This commit is contained in:
commit
d06853c5e8
1 changed files with 4531 additions and 0 deletions
148
docs/spec/prompts.md
Normal file
148
docs/spec/prompts.md
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
---
|
||||
title: Prompts
|
||||
type: docs
|
||||
weight: 3
|
||||
---
|
||||
|
||||
The Prompts API allows clients to retrieve information about available prompts and prompt templates from the server.
|
||||
|
||||
## Capabilities
|
||||
|
||||
To indicate support for the Prompts API, server and client **MUST** agree on the `prompts` capability in their capabilities during initialization.
|
||||
|
||||
## Request example
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Client
|
||||
participant Server
|
||||
|
||||
Client->>Server: prompts/list
|
||||
Server-->>Client: ListPromptsResult
|
||||
Note over Client,Server: Client selects a prompt
|
||||
Client->>Server: prompts/get
|
||||
Server-->>Client: GetPromptResult
|
||||
```
|
||||
|
||||
## List Prompts
|
||||
|
||||
The client **SHOULD** send a `prompts/list` request to retrieve a list of available prompts and prompt templates from the server.
|
||||
|
||||
### Request
|
||||
|
||||
- method: "prompts/list"
|
||||
- params: none
|
||||
|
||||
### Response
|
||||
|
||||
The server **MUST** respond with a `ListPromptsResult` as defined in the TypeScript interface:
|
||||
|
||||
```typescript
|
||||
export interface ListPromptsResult extends Result {
|
||||
prompts: Prompt[];
|
||||
}
|
||||
```
|
||||
|
||||
Each `Prompt` object in the `prompts` array **MUST** conform to the following TypeScript interface:
|
||||
|
||||
```typescript
|
||||
export interface Prompt {
|
||||
name: string;
|
||||
description?: string;
|
||||
arguments?: {
|
||||
name: string;
|
||||
description?: string;
|
||||
required?: boolean;
|
||||
}[];
|
||||
}
|
||||
```
|
||||
|
||||
The server **MUST** include:
|
||||
|
||||
- prompts: An array of `Prompt` objects describing the available prompts/templates
|
||||
|
||||
Each `Prompt` object **MUST** contain:
|
||||
|
||||
- name: A string identifying the prompt/template
|
||||
- description: An optional string describing the prompt (if provided)
|
||||
- arguments: An optional array of argument definitions (if the prompt is a template)
|
||||
|
||||
Argument definitions, if present, **MUST** include:
|
||||
|
||||
- name: The argument name
|
||||
- description: An optional description of the argument
|
||||
- required: An optional boolean indicating if the argument is required
|
||||
|
||||
The server **SHOULD** provide descriptive names and descriptions to help clients understand the purpose and usage of each prompt or template.
|
||||
## Get Prompt
|
||||
|
||||
To retrieve a specific prompt or instantiate a prompt template, the client **SHOULD** send a `prompts/get` request.
|
||||
|
||||
### Request
|
||||
|
||||
- method: "prompts/get"
|
||||
- params:
|
||||
- name: The name of the prompt/template to retrieve
|
||||
- arguments: An optional object containing argument values for templates
|
||||
|
||||
### Response
|
||||
|
||||
The server **MUST** respond with a `GetPromptResult` containing:
|
||||
|
||||
- description: An optional string describing the prompt
|
||||
- messages: An array of `SamplingMessage` objects representing the prompt content
|
||||
|
||||
Each `SamplingMessage` **MUST** have:
|
||||
|
||||
- role: Either "user" or "assistant"
|
||||
- content: Either a text object or an image object
|
||||
|
||||
Text content objects **MUST** contain:
|
||||
|
||||
- type: "text"
|
||||
- text: The text content
|
||||
|
||||
Image content objects **MUST** contain:
|
||||
|
||||
- type: "image"
|
||||
- data: Base64-encoded image data
|
||||
- mimeType: The MIME type of the image
|
||||
|
||||
Example response:
|
||||
|
||||
```json
|
||||
{
|
||||
"description": "A prompt for analyzing code quality",
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": {
|
||||
"type": "text",
|
||||
"text": "Please review the following code snippet and provide feedback on its quality and potential improvements:"
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": {
|
||||
"type": "text",
|
||||
"text": "Certainly! I'd be happy to review the code snippet and provide feedback on its quality and potential improvements. Please share the code you'd like me to analyze."
|
||||
}
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": {
|
||||
"type": "text",
|
||||
"text": "{{code}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
In this example, `{{code}}` is a placeholder that would be replaced with the actual code snippet when the prompt is used.
|
||||
|
||||
## Capabilities
|
||||
|
||||
To indicate support for the Prompts API, servers **MUST** include a `prompts` capability in their `ServerCapabilities` during initialization.
|
||||
|
||||
Clients **SHOULD** check for this capability before using the Prompts API.
|
||||
Loading…
Reference in a new issue