86 lines
3.2 KiB
Python
86 lines
3.2 KiB
Python
# Copyright (C) 2025 AIDC-AI
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""
|
|
Title generation prompt
|
|
|
|
For generating video title from content.
|
|
"""
|
|
|
|
|
|
TITLE_GENERATION_PROMPT = """Please generate a short, attractive title for the following content.
|
|
|
|
Content:
|
|
{content}
|
|
|
|
Requirements:
|
|
1. **Language Consistency (CRITICAL)**: The title MUST be in the same language as the input content
|
|
- If the input content is in English, the title MUST be in English
|
|
- If the input content is in Chinese, the title MUST be in Chinese
|
|
- Strictly follow the language of the input content
|
|
|
|
2. **Character Limit (CRITICAL)**: The title MUST NOT exceed {max_length} characters
|
|
- Count every character including spaces
|
|
- The title must be complete and meaningful within this limit
|
|
- Do NOT generate a title that would need to be cut off
|
|
|
|
3. **Core Message (CRITICAL)**: The title MUST capture the MAIN POINT of the content
|
|
- Identify the central theme or key message
|
|
- Don't focus on just one aspect if the content has multiple important points
|
|
- Ensure the title accurately represents what the content is about
|
|
|
|
4. **No Punctuation at End**: Do NOT include any punctuation marks at the end of the title
|
|
- No period (.), comma (,), exclamation mark (!), question mark (?), etc.
|
|
- The title should end with a word or number, not punctuation
|
|
|
|
5. **Completeness**: Ensure the title is a complete, meaningful phrase
|
|
- Do not cut off in the middle of a word or number
|
|
- Do not create incomplete phrases like "Rise Early for" or "How to Make"
|
|
- Use abbreviations or shorter words if needed to fit the limit
|
|
|
|
6. **Abbreviation Examples** (use when needed to fit character limit):
|
|
- For English:
|
|
* "10,000" → "10K"
|
|
* "per month" → "monthly" or "a month"
|
|
* "early to bed and early to rise" → "Sleep Early" or "Early Habits"
|
|
* "makes you healthy" → "for Health" or "Stay Healthy"
|
|
- For Chinese:
|
|
* "10,000元" → "万元" or "1万"
|
|
* "每个月" → "月入" or "月收"
|
|
|
|
7. Accurately summarize the core content
|
|
8. Attractive and engaging, suitable as a video title
|
|
9. Output only the title text, no quotes, no explanations
|
|
|
|
Title:"""
|
|
|
|
|
|
def build_title_generation_prompt(content: str, max_length: int = 15) -> str:
|
|
"""
|
|
Build title generation prompt
|
|
|
|
Args:
|
|
content: Content to generate title from
|
|
max_length: Maximum title length in characters (default: 15)
|
|
|
|
Returns:
|
|
Formatted prompt with character limit
|
|
"""
|
|
# Take first 500 chars to avoid overly long prompts
|
|
content_preview = content[:500]
|
|
|
|
return TITLE_GENERATION_PROMPT.format(
|
|
content=content_preview,
|
|
max_length=max_length
|
|
)
|
|
|