Spaces:
Runtime error
Runtime error
Update main.py
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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", "
|
| 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 |
])
|