# 提示词模板配置系统

## 概述

这个配置系统用于管理问答应用中的提示词模板，避免在代码中硬编码长文本，提高代码的可维护性和可扩展性。

## 文件结构

```
src/pages/deepseek/questionAnswer/info/
├── promptTemplates.ts    # 提示词模板配置文件
├── index.tsx            # 主组件文件
└── README.md           # 说明文档
```

## 使用方法

### 1. 基本使用

```typescript
import { DEFAULT_PROMPT_TEMPLATE, getPromptTemplate } from './promptTemplates';

// 使用默认模板
const defaultPrompt = DEFAULT_PROMPT_TEMPLATE;

// 使用特定模板
const chatPrompt = getPromptTemplate('CHAT_ASSISTANT');
```

### 2. 在组件中使用

```typescript
import { DEFAULT_PROMPT_TEMPLATE } from './promptTemplates';

// 在FormItem中使用
<FormItem 
  name='prompt'
  initialValue={DEFAULT_PROMPT_TEMPLATE}
  rules={[{ required: true, message: '提示词不能为空' }]}
>
  <TextArea placeholder="提示词" rows={50} />
</FormItem>
```

### 3. 添加新的提示词模板

在 `promptTemplates.ts` 中添加新的模板：

```typescript
export const PROMPT_TEMPLATES = {
  // 现有模板...
  
  // 新增模板
  CUSTOM_ASSISTANT: `你是一个自定义助手，请根据以下要求提供服务：

用户需求: {{用户}}
参考文档: {{知识}}

请按照要求完成任务。`
};
```

### 4. 验证和格式化

```typescript
import { 
  validatePromptTemplate, 
  formatPromptTemplate 
} from './promptTemplates';

// 验证模板是否包含必要占位符
const isValid = validatePromptTemplate(template);

// 格式化模板（替换占位符）
const formattedPrompt = formatPromptTemplate(
  template, 
  '知识库内容', 
  '用户输入'
);
```

## 模板类型

| 类型 | 描述 | 用途 |
|------|------|------|
| `KNOWLEDGE_RETRIEVAL_ASSISTANT` | 知识检索助手 | 基于知识库内容回答问题 |
| `CHAT_ASSISTANT` | 聊天助手 | 提供友好的对话服务 |
| `DOCUMENT_SUMMARY` | 文档总结 | 提取文档关键信息 |
| `CODE_ASSISTANT` | 代码助手 | 提供代码解决方案 |
| `TRANSLATION_ASSISTANT` | 翻译助手 | 多语言翻译服务 |

## 占位符说明

- `{{知识}}`: 知识库内容占位符
- `{{用户}}`: 用户输入占位符

## 最佳实践

1. **保持模板简洁**: 避免在模板中包含过多的逻辑判断
2. **使用占位符**: 统一使用 `{{知识}}` 和 `{{用户}}` 占位符
3. **添加描述**: 为每个模板添加清晰的描述
4. **验证模板**: 使用 `validatePromptTemplate` 验证模板格式
5. **版本控制**: 对模板的修改进行版本控制

## 扩展功能

### 动态模板选择

可以添加一个下拉选择器让用户选择不同的提示词模板：

```typescript
import { 
  getAvailableTemplateTypes, 
  PROMPT_TEMPLATE_DESCRIPTIONS 
} from './promptTemplates';

const templateTypes = getAvailableTemplateTypes();

<Select 
  placeholder="选择提示词模板"
  onChange={(value) => setSelectedTemplate(value)}
>
  {templateTypes.map(type => (
    <Option key={type} value={type}>
      {PROMPT_TEMPLATE_DESCRIPTIONS[type]}
    </Option>
  ))}
</Select>
```

### 模板预览

可以添加模板预览功能，让用户在应用前查看模板内容。

## 注意事项

1. 修改模板后需要重新测试应用功能
2. 确保所有模板都包含必要的占位符
3. 保持模板的向后兼容性
4. 定期审查和更新模板内容
