NAko3 commited on
Commit
7b0f44b
·
verified ·
1 Parent(s): e27660d

Update prompt_engine.py

Browse files
Files changed (1) hide show
  1. prompt_engine.py +51 -9
prompt_engine.py CHANGED
@@ -1,4 +1,6 @@
1
  import json
 
 
2
 
3
  class PromptGenerator:
4
  def __init__(self):
@@ -113,11 +115,11 @@ class PromptGenerator:
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)
@@ -136,9 +138,12 @@ class PromptGenerator:
136
  elif "qwen" in model:
137
  # 創造性に特化したモデルはさらに高い値
138
  temperature = 0.85
 
 
 
139
 
140
  # Groq APIでプロンプト生成
141
- response = groq_client.chat.completions.create(
142
  model=model, # 選択されたモデルを使用
143
  messages=[
144
  {"role": "system", "content": self.system_prompt},
@@ -154,6 +159,45 @@ class PromptGenerator:
154
  except Exception as e:
155
  return f"エラーが発生しました: {str(e)}"
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  def _build_user_message(self, params, analysis=None):
158
  """ユーザーメッセージの構築"""
159
  # 基本情報
@@ -184,7 +228,7 @@ class PromptGenerator:
184
  この分析結果を考慮して、以下の重要なガイドラインに従ってプロンプトを生成してください:
185
 
186
  1. プロンプトは必ず英語で生成すること(システムタグやパラメータ名も含め)
187
- 2. ユーザーの元の入力内容({params["input"]})の本質を必ず維持すること
188
  3. 主体となる対象や重要な要素は絶対に変更しないこと
189
  例:「イルカ」を「シャチ」に変えるなど種類/種別を変更しない
190
  例:「猫」を「虎」に変えるなど、近い種でも誤変換しない
@@ -197,11 +241,9 @@ class PromptGenerator:
197
  7. 代替解釈の可能性がある場合は、ユーザーの意図に最も近いと思われる解釈を選択すること
198
  8. システムタグやパラメータ内の言語も必ず英語にすること(例:「图像:」→「image:」)
199
 
200
- プロンプトの質を高めるため、以下の要素を含めてください:
201
- - 明確な主体と背景の説明
202
- - 適切な芸術的表現方法と技術的詳細
203
- - 重み付けシステム(::1.2など)で重要な要素を強調
204
- - MidJourney/nijiJourney固有のパラメータを効果的に活用
205
  """
206
 
207
  # 基本設定
 
1
  import json
2
+ import os
3
+ import requests
4
 
5
  class PromptGenerator:
6
  def __init__(self):
 
115
  except Exception as e:
116
  return f"分析エラー: {str(e)}"
117
 
118
+ def generate_prompt(self, client, params):
119
  """プロンプト生成のメインメソッド"""
120
  try:
121
  # 1. まずQwenモデルでユーザー入力を分析
122
+ analysis = self.analyze_user_input(client, params["input"])
123
 
124
  # 2. 分析結果を含めたユーザーメッセージの構築
125
  user_message = self._build_user_message(params, analysis)
 
138
  elif "qwen" in model:
139
  # 創造性に特化したモデルはさらに高い値
140
  temperature = 0.85
141
+ elif "o4-mini" in model:
142
+ # OpenAI GPT APIの場合
143
+ return self._generate_with_openai(params, user_message)
144
 
145
  # Groq APIでプロンプト生成
146
+ response = client.chat.completions.create(
147
  model=model, # 選択されたモデルを使用
148
  messages=[
149
  {"role": "system", "content": self.system_prompt},
 
159
  except Exception as e:
160
  return f"エラーが発生しました: {str(e)}"
161
 
162
+ def _generate_with_openai(self, params, user_message):
163
+ """OpenAI GPT APIを使用してプロンプトを生成"""
164
+ try:
165
+ # OpenAI APIキーを環境変数から取得
166
+ api_key = os.environ.get("OPENAI_API_KEY")
167
+ if not api_key:
168
+ return "OpenAI APIキーが設定されていません。"
169
+
170
+ # OpenAI APIのエンドポイント
171
+ url = "https://api.openai.com/v1/chat/completions"
172
+
173
+ # ヘッダー情報
174
+ headers = {
175
+ "Content-Type": "application/json",
176
+ "Authorization": f"Bearer {api_key}"
177
+ }
178
+
179
+ # リクエストボディ
180
+ data = {
181
+ "model": "o4-mini-2025-04-16",
182
+ "max_tokens": 2048,
183
+ "temperature": 0.75,
184
+ "messages": [
185
+ {"role": "system", "content": self.system_prompt},
186
+ {"role": "user", "content": user_message}
187
+ ]
188
+ }
189
+
190
+ # APIリクエスト送信
191
+ response = requests.post(url, headers=headers, json=data)
192
+ response.raise_for_status()
193
+
194
+ # レスポンスの解析
195
+ result = response.json()
196
+ return result["choices"][0]["message"]["content"]
197
+
198
+ except Exception as e:
199
+ return f"OpenAI APIエラー: {str(e)}"
200
+
201
  def _build_user_message(self, params, analysis=None):
202
  """ユーザーメッセージの構築"""
203
  # 基本情報
 
228
  この分析結果を考慮して、以下の重要なガイドラインに従ってプロンプトを生成してください:
229
 
230
  1. プロンプトは必ず英語で生成すること(システムタグやパラメータ名も含め)
231
+ 2. ユーザーの元の入力内容({params["input"]})を最優先し、その意図と本質を100%維持すること
232
  3. 主体となる対象や重要な要素は絶対に変更しないこと
233
  例:「イルカ」を「シャチ」に変えるなど種類/種別を変更しない
234
  例:「猫」を「虎」に変えるなど、近い種でも誤変換しない
 
241
  7. 代替解釈の可能性がある場合は、ユーザーの意図に最も近いと思われる解釈を選択すること
242
  8. システムタグやパラメータ内の言語も必ず英語にすること(例:「图像:」→「image:」)
243
 
244
+ 【重要】ユーザーの元の入力({params["input"]})を最も重視してください。分析結果はあくまで補助情報として使用し、
245
+ 元の入力内容の意図を変えたり、要素を追加/除外したりしないでください。
246
+ プロンプトは必ずユーザーの入力を正確に英語に変換し、その上で適切なテクニックを適用してください。
 
 
247
  """
248
 
249
  # 基本設定