NAko3 commited on
Commit
7700440
·
verified ·
1 Parent(s): 906e54b

Update prompt_engine.py

Browse files
Files changed (1) hide show
  1. 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
- user_message = self._build_user_message(params)
60
 
61
- # 選択されたモデルを取得(デフォルトは "llama-3.3-70b-versatile")
 
 
 
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
  # 基本設定