hazelhh commited on
Commit
6bf9daa
·
verified ·
1 Parent(s): 835c74a

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +13 -5
main.py CHANGED
@@ -23,6 +23,8 @@ from langchain_core.prompts import ChatPromptTemplate
23
  from langchain_core.tools import tool
24
  from langchain_google_genai import ChatGoogleGenerativeAI
25
  from langchain.agents import AgentExecutor, create_tool_calling_agent
 
 
26
 
27
  # ==========================# 環境設定與工具函式# ==========================#
28
  # 設置日誌記錄,級別為 INFO,格式包含時間、級別和訊息
@@ -124,20 +126,26 @@ def get_image_url_from_line(message_id):
124
  return None
125
 
126
  # ==========================# LangChain 工具定義# ==========================#
127
- @tool
 
 
 
 
 
 
128
  def generate_outfit_from_clothes(upper_body_urls: list, lower_body_urls: list) -> str:
129
  """
130
  這個工具可以根據提供的上衣和褲子/裙子圖片 URLs,生成一套全新的穿搭圖片。
131
-
132
  Args:
133
  upper_body_urls: 一組上衣圖片的 URL 列表。
134
  lower_body_urls: 一組褲子/裙子圖片的 URL 列表。
135
-
136
  Returns:
137
  回傳生成圖片的 URL。
138
  """
139
  logging.info("Attempting to generate a new outfit image.")
140
- prompt = "使用提供的上衣和褲子/裙子圖片,生成一套完整且時尚的穿搭圖片。請將衣服呈現在一個有模特兒穿著或是在平面上呈現的完整畫面中。風格應與提供的衣物相符。都使用繁體中文回覆。"
141
 
142
  all_images_base64 = (
143
  [get_base64_from_url(url) for url in upper_body_urls] +
@@ -224,7 +232,7 @@ tools = [generate_outfit_from_clothes, analyze_image_with_text]
224
  llm = ChatGoogleGenerativeAI(google_api_key=google_api, model="gemini-2.5-flash", temperature=0.2)
225
  # 建立提示模板
226
  prompt_template = ChatPromptTemplate([
227
- ("system", "你是一個強大的圖像生成與虛擬穿搭問答助理,可以根據用戶的請求使用提供的工具。當你執行 generate_and_upload_image 工具\ 成功後會獲得一個 URL,然後你回答的 output 要包含有這個 URL 的完整資訊。如果工具有產生錯誤訊息請解讀並回應。都使用繁體中文回覆。"),
228
  ("user", "{input}"),
229
  ("placeholder", "{agent_scratchpad}"),
230
  ])
 
23
  from langchain_core.tools import tool
24
  from langchain_google_genai import ChatGoogleGenerativeAI
25
  from langchain.agents import AgentExecutor, create_tool_calling_agent
26
+ from pydantic import BaseModel, Field
27
+ from typing import List
28
 
29
  # ==========================# 環境設定與工具函式# ==========================#
30
  # 設置日誌記錄,級別為 INFO,格式包含時間、級別和訊息
 
126
  return None
127
 
128
  # ==========================# LangChain 工具定義# ==========================#
129
+ # 定義工具的輸入模型,明確指定參數的型別和描述
130
+ class OutfitInput(BaseModel):
131
+ """用於生成穿搭圖片的輸入參數。"""
132
+ upper_body_urls: List[str] = Field(..., description="上衣圖片的 URL 列表。")
133
+ lower_body_urls: List[str] = Field(..., description="褲子/裙子圖片的 URL 列表。")
134
+
135
+ @tool(args_schema=OutfitInput)
136
  def generate_outfit_from_clothes(upper_body_urls: list, lower_body_urls: list) -> str:
137
  """
138
  這個工具可以根據提供的上衣和褲子/裙子圖片 URLs,生成一套全新的穿搭圖片。
139
+
140
  Args:
141
  upper_body_urls: 一組上衣圖片的 URL 列表。
142
  lower_body_urls: 一組褲子/裙子圖片的 URL 列表。
143
+
144
  Returns:
145
  回傳生成圖片的 URL。
146
  """
147
  logging.info("Attempting to generate a new outfit image.")
148
+ prompt = "使用提供的上衣和褲子/裙子圖片,生成一套完整且時尚的穿搭圖片。請將衣服呈現在一個有模特兒穿著或是在平面上呈現的完整畫面中。風格應與提供的衣物相符。"
149
 
150
  all_images_base64 = (
151
  [get_base64_from_url(url) for url in upper_body_urls] +
 
232
  llm = ChatGoogleGenerativeAI(google_api_key=google_api, model="gemini-2.5-flash", temperature=0.2)
233
  # 建立提示模板
234
  prompt_template = ChatPromptTemplate([
235
+ ("system", "你是一個強大的圖像生成與問答助理,可以根據用戶的請求使用提供的工具。當你執行 generate_and_upload_image 工具成功後會獲得一個 URL,然後你回答的 output 要包含有這個 URL 的完整資訊。如果工具有產生錯誤訊息請解讀並回應。"),
236
  ("user", "{input}"),
237
  ("placeholder", "{agent_scratchpad}"),
238
  ])