Spaces:
Running
Running
Update prompt_engine.py
Browse files- prompt_engine.py +78 -4
prompt_engine.py
CHANGED
@@ -52,13 +52,77 @@ class PromptGenerator:
|
|
52 |
2. その後に「解説:」という見出しをつけて、使用したテクニックの説明を記載してください。
|
53 |
"""
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
def generate_prompt(self, groq_client, params):
|
56 |
"""プロンプト生成のメインメソッド"""
|
57 |
try:
|
58 |
-
#
|
59 |
-
|
60 |
|
61 |
-
#
|
|
|
|
|
|
|
62 |
model = params.get("model", "llama-3.3-70b-versatile")
|
63 |
|
64 |
# モデルごとの最適なパラメータ設定
|
@@ -90,7 +154,7 @@ class PromptGenerator:
|
|
90 |
except Exception as e:
|
91 |
return f"エラーが発生しました: {str(e)}"
|
92 |
|
93 |
-
def _build_user_message(self, params):
|
94 |
"""ユーザーメッセージの構築"""
|
95 |
# 基本情報
|
96 |
mode = "MidJourney" if params["mode"] == "midjourney" else "nijiJourney"
|
@@ -109,6 +173,16 @@ class PromptGenerator:
|
|
109 |
入力: {params["input"]}
|
110 |
モード: {mode}
|
111 |
複雑さ: {complexity}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
"""
|
113 |
|
114 |
# 基本設定
|
|
|
52 |
2. その後に「解説:」という見出しをつけて、使用したテクニックの説明を記載してください。
|
53 |
"""
|
54 |
|
55 |
+
def analyze_user_input(self, groq_client, user_input, model="qwen-qwq-32b"):
|
56 |
+
"""Qwenモデルでユーザー入力を分析する"""
|
57 |
+
# 中国語のプロンプトを使用
|
58 |
+
analysis_prompt = """
|
59 |
+
你是一个具有高级思维能力的AI。在解决问题时,必须严格按照以下"思维链"格式执行,确保真正的链式思考得以展现。你需要分析用户对AI绘画的输入要求,深入理解用户想要生成的图像。
|
60 |
+
## 重要禁止事项
|
61 |
+
- 禁止输出任何形式的代码!
|
62 |
+
- 禁止输出任何调试或系统信息!
|
63 |
+
- 禁止跳过任何分析步骤!
|
64 |
+
- 禁止使用自己的格式代替指定模板!
|
65 |
+
- 禁止使用<tool_response>、</tool_call>或任何其他未指定的标签!
|
66 |
+
## 1. 思考结构(必须严格遵循)
|
67 |
+
`<think>
|
68 |
+
### 初始分析(每项≤30字)
|
69 |
+
- 要求分析: [详述显性与隐性要素]
|
70 |
+
- 主题元素: [主要主题/对象]
|
71 |
+
- 背景元素: [场景/环境/时间]
|
72 |
+
- 情感元素: [应表达的情感/氛围]
|
73 |
+
- 风格元素: [期望的艺术形式/风格]
|
74 |
+
|
75 |
+
### 视觉洞察(每项≤40字)
|
76 |
+
- 初始洞察→[对用户要求的第一印象]
|
77 |
+
- 构图洞察→[最佳构图和视角]
|
78 |
+
- 色彩洞察→[色调和对比度的考量]
|
79 |
+
- 技术洞察→[应用的绘画技术/效果]
|
80 |
+
- 隐藏元素→[未明确但重要的视觉元素]
|
81 |
+
|
82 |
+
### 改进洞察(每项≤40字)
|
83 |
+
- 具体化→[如何使模糊表达更具体]
|
84 |
+
- 强调→[应特别强调的视觉元素]
|
85 |
+
- 添加→[添加后效果更佳的元素]
|
86 |
+
- 平衡→[元素间的优先级和平衡]
|
87 |
+
|
88 |
+
### 最终分析
|
89 |
+
- 最佳表达:[最有效的表达方式建议]
|
90 |
+
- 重要关键词:[应包含在提示中的重要英文单词,用逗号分隔]
|
91 |
+
</think>\n`
|
92 |
+
## 2. 输出格式
|
93 |
+
完成思考后,必须以以下格式输出:
|
94 |
+
1. **"TYPE:AI_ART"**
|
95 |
+
2. **"SUBJECT:[用英文简述主题]"**
|
96 |
+
3. **"STYLE:[用英文简述最佳艺术风格]"**
|
97 |
+
4. **"KEYWORDS:[用英文列出重要关键词,逗号分隔]"**
|
98 |
+
5. **"MEMO:[用日语特别说明,≤50字]"**
|
99 |
+
"""
|
100 |
+
|
101 |
+
try:
|
102 |
+
response = groq_client.chat.completions.create(
|
103 |
+
model=model,
|
104 |
+
messages=[
|
105 |
+
{"role": "system", "content": analysis_prompt},
|
106 |
+
{"role": "user", "content": user_input}
|
107 |
+
],
|
108 |
+
temperature=0.7,
|
109 |
+
max_tokens=1024,
|
110 |
+
)
|
111 |
+
|
112 |
+
return response.choices[0].message.content
|
113 |
+
except Exception as e:
|
114 |
+
return f"分析エラー: {str(e)}"
|
115 |
+
|
116 |
def generate_prompt(self, groq_client, params):
|
117 |
"""プロンプト生成のメインメソッド"""
|
118 |
try:
|
119 |
+
# 1. まずQwenモデルでユーザー入力を分析
|
120 |
+
analysis = self.analyze_user_input(groq_client, params["input"])
|
121 |
|
122 |
+
# 2. 分析結果を含めたユーザーメッセージの構築
|
123 |
+
user_message = self._build_user_message(params, analysis)
|
124 |
+
|
125 |
+
# 3. 選択されたモデルでプロンプト生成
|
126 |
model = params.get("model", "llama-3.3-70b-versatile")
|
127 |
|
128 |
# モデルごとの最適なパラメータ設定
|
|
|
154 |
except Exception as e:
|
155 |
return f"エラーが発生しました: {str(e)}"
|
156 |
|
157 |
+
def _build_user_message(self, params, analysis=None):
|
158 |
"""ユーザーメッセージの構築"""
|
159 |
# 基本情報
|
160 |
mode = "MidJourney" if params["mode"] == "midjourney" else "nijiJourney"
|
|
|
173 |
入力: {params["input"]}
|
174 |
モード: {mode}
|
175 |
複雑さ: {complexity}
|
176 |
+
"""
|
177 |
+
|
178 |
+
# 分析結果があれば追加
|
179 |
+
if analysis:
|
180 |
+
message += f"""
|
181 |
+
\n分析結果:
|
182 |
+
{analysis}
|
183 |
+
|
184 |
+
この分析結果を考慮して、ユーザーの元の入力内容({params["input"]})の本質を必ず維持してください。
|
185 |
+
特に主体となる対象や重要な要素は絶対に変更せず、それらを基に最適なプロンプトを生成してください。
|
186 |
"""
|
187 |
|
188 |
# 基本設定
|