soiz1 commited on
Commit
99bb500
·
verified ·
1 Parent(s): 8a1cdef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -7
app.py CHANGED
@@ -48,32 +48,37 @@ def convert_image_to_dataurl(image):
48
  return f"data:image/png;base64,{img_str}"
49
 
50
  def respond(message, history, system_message, max_tokens, temperature, top_p, model_choice, web_search, image=None):
 
51
  history = truncate_history(history, max_tokens=2048)
52
 
 
53
  messages = [{"role": "system", "content": system_message}]
54
 
 
55
  for user_msg, assistant_msg in history:
56
  if user_msg:
57
  messages.append({"role": "user", "content": user_msg})
58
  if assistant_msg:
59
  messages.append({"role": "assistant", "content": assistant_msg})
60
-
61
- # 画像データの追加
62
  if image:
 
63
  img = Image.open(io.BytesIO(base64.b64decode(image.split(",")[1])))
64
- img = img.resize((512, 512))
65
  buffered = io.BytesIO()
66
  img.save(buffered, format="PNG")
67
  img_data = base64.b64encode(buffered.getvalue()).decode("utf-8")
68
 
69
- # 画像は「content」に直接入れず、「messages」にオブジェクトとして追加
70
- messages.append(message)
 
71
  else:
72
  messages.append({"role": "user", "content": message})
73
 
74
  try:
75
  response = client.chat.completions.create(
76
- model="gpt-4o", # 画像対応モデルに変更
77
  messages=messages,
78
  max_tokens=max_tokens,
79
  temperature=temperature,
@@ -148,4 +153,4 @@ with gr.Blocks() as demo:
148
  outputs=[chatbot_input, chat_history_display, state]
149
  )
150
 
151
- demo.launch()
 
48
  return f"data:image/png;base64,{img_str}"
49
 
50
  def respond(message, history, system_message, max_tokens, temperature, top_p, model_choice, web_search, image=None):
51
+ # 履歴が長すぎないようにトークン数を制限
52
  history = truncate_history(history, max_tokens=2048)
53
 
54
+ # システムメッセージを先頭に追加
55
  messages = [{"role": "system", "content": system_message}]
56
 
57
+ # これまでの会話履歴を追加
58
  for user_msg, assistant_msg in history:
59
  if user_msg:
60
  messages.append({"role": "user", "content": user_msg})
61
  if assistant_msg:
62
  messages.append({"role": "assistant", "content": assistant_msg})
63
+
64
+ # 今回のユーザーメッセージを追加
65
  if image:
66
+ # 画像をリサイズしてデータ量を削減
67
  img = Image.open(io.BytesIO(base64.b64decode(image.split(",")[1])))
68
+ img = img.resize((512, 512)) # サイズ縮小
69
  buffered = io.BytesIO()
70
  img.save(buffered, format="PNG")
71
  img_data = base64.b64encode(buffered.getvalue()).decode("utf-8")
72
 
73
+ # 画像データを適切に埋め込む
74
+ image_message = [{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_data}"}}]
75
+ messages.append({"role": "user", "content": image_message})
76
  else:
77
  messages.append({"role": "user", "content": message})
78
 
79
  try:
80
  response = client.chat.completions.create(
81
+ model=model_choice,
82
  messages=messages,
83
  max_tokens=max_tokens,
84
  temperature=temperature,
 
153
  outputs=[chatbot_input, chat_history_display, state]
154
  )
155
 
156
+ demo.launch()