Skip to content

Commit def374b

Browse files
doraemonlovewangjiaju
andauthored
chore(tools): add builtin tools log (#245)
Co-authored-by: wangjiaju <[email protected]>
1 parent 7f33f08 commit def374b

File tree

4 files changed

+84
-14
lines changed

4 files changed

+84
-14
lines changed

veadk/tools/builtin_tools/generate_image.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def _build_input_parts(item: dict, task_type: str, image_field):
8383
def handle_single_task_sync(
8484
idx: int, item: dict, tool_context
8585
) -> tuple[list[dict], list[str]]:
86+
logger.debug(f"handle_single_task_sync item {idx}: {item}")
8687
success_list: list[dict] = []
8788
error_list: list[str] = []
8889
total_tokens = 0
@@ -131,6 +132,8 @@ def handle_single_task_sync(
131132
)
132133

133134
if not response.error:
135+
logger.debug(f"task {idx} Image generate response: {response}")
136+
134137
total_tokens += getattr(response.usage, "total_tokens", 0) or 0
135138
output_tokens += getattr(response.usage, "output_tokens", 0) or 0
136139

@@ -165,10 +168,14 @@ def handle_single_task_sync(
165168
output_part[f"message.parts.{i}.type"] = "image_url"
166169
output_part[f"message.parts.{i}.image_url.name"] = image_name
167170
output_part[f"message.parts.{i}.image_url.url"] = image_url
168-
171+
logger.debug(
172+
f"Image {image_name} generated successfully: {image_url}"
173+
)
169174
success_list.append({image_name: image_url})
170175
else:
171-
logger.error(f"No images returned by model: {response.error}")
176+
logger.error(
177+
f"Task {idx} No images returned by model: {response.error}"
178+
)
172179
error_list.append(f"task_{idx}")
173180

174181
except Exception as e:
@@ -191,7 +198,9 @@ def handle_single_task_sync(
191198
"MODEL_IMAGE_NAME", DEFAULT_IMAGE_GENERATE_MODEL_NAME
192199
),
193200
)
194-
201+
logger.debug(
202+
f"task {idx} Image generate success_list: {success_list}\nerror_list: {error_list}"
203+
)
195204
return success_list, error_list
196205

197206

@@ -275,9 +284,12 @@ async def image_generate(tasks: list[dict], tool_context) -> Dict:
275284
- 如果想要指定生成组图的数量,请在prompt里添加数量说明,例如:"生成3张图片"。
276285
- size 推荐使用 2048x2048 或表格里的标准比例,确保生成质量。
277286
"""
287+
logger.debug(
288+
f"Using model: {getenv('MODEL_IMAGE_NAME', DEFAULT_IMAGE_GENERATE_MODEL_NAME)}"
289+
)
278290
success_list: list[dict] = []
279291
error_list: list[str] = []
280-
292+
logger.debug(f"image_generate tasks: {tasks}")
281293
with tracer.start_as_current_span("image_generate"):
282294
base_ctx = contextvars.copy_context()
283295

@@ -303,12 +315,14 @@ def make_task(idx, item):
303315
error_list.extend(e)
304316

305317
if not success_list:
318+
logger.debug(
319+
f"image_generate success_list: {success_list}\nerror_list: {error_list}"
320+
)
306321
return {
307322
"status": "error",
308323
"success_list": success_list,
309324
"error_list": error_list,
310325
}
311-
312326
app_name = tool_context._invocation_context.app_name
313327
user_id = tool_context._invocation_context.user_id
314328
session_id = tool_context._invocation_context.session.id
@@ -332,6 +346,9 @@ def make_task(idx, item):
332346
),
333347
)
334348

349+
logger.debug(
350+
f"image_generate success_list: {success_list}\nerror_list: {error_list}"
351+
)
335352
return {"status": "success", "success_list": success_list, "error_list": error_list}
336353

337354

veadk/tools/builtin_tools/image_edit.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,14 @@ async def image_edit(
9797
- Provide the same `seed` for consistent outputs across runs.
9898
- A high `guidance_scale` enforces stricter adherence to text prompt.
9999
"""
100+
logger.debug(
101+
f"Using model: {getenv('MODEL_EDIT_NAME', DEFAULT_IMAGE_EDIT_MODEL_NAME)}"
102+
)
100103
success_list = []
101104
error_list = []
105+
logger.debug(f"image_edit params: {params}")
102106
for idx, item in enumerate(params):
107+
logger.debug(f"image_edit item {idx}: {item}")
103108
image_name = item.get("image_name", f"generated_image_{idx}")
104109
prompt = item.get("prompt")
105110
origin_image = item.get("origin_image")
@@ -133,6 +138,7 @@ async def image_edit(
133138
)
134139
output_part = None
135140
if response.data and len(response.data) > 0:
141+
logger.debug(f"task {idx} Image edit response: {response}")
136142
for item in response.data:
137143
if response_format == "url":
138144
image = item.url
@@ -167,7 +173,9 @@ async def image_edit(
167173
continue
168174

169175
logger.debug(f"Image saved as ADK artifact: {image_name}")
170-
176+
logger.debug(
177+
f"Image {image_name} generated successfully: {image}"
178+
)
171179
success_list.append({image_name: image})
172180
else:
173181
error_details = f"No images returned by Doubao model: {response}"
@@ -196,12 +204,18 @@ async def image_edit(
196204
error_list.append(image_name)
197205

198206
if len(success_list) == 0:
207+
logger.debug(
208+
f"image_edit success_list: {success_list}\nerror_list: {error_list}"
209+
)
199210
return {
200211
"status": "error",
201212
"success_list": success_list,
202213
"error_list": error_list,
203214
}
204215
else:
216+
logger.debug(
217+
f"image_edit success_list: {success_list}\nerror_list: {error_list}"
218+
)
205219
return {
206220
"status": "success",
207221
"success_list": success_list,

veadk/tools/builtin_tools/image_generate.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,14 @@ async def image_generate(
9898
- Use a fixed `seed` for reproducibility.
9999
- Choose appropriate `size` for desired aspect ratio.
100100
"""
101+
logger.debug(
102+
f"Using model: {getenv('MODEL_IMAGE_NAME', DEFAULT_TEXT_TO_IMAGE_MODEL_NAME)}"
103+
)
101104
success_list = []
102105
error_list = []
106+
logger.debug(f"image_generate params: {params}")
103107
for idx, item in enumerate(params):
108+
logger.debug(f"image_generate item {idx}: {item}")
104109
prompt = item.get("prompt", "")
105110
image_name = item.get("image_name", f"generated_image_{idx}")
106111
response_format = item.get("response_format", "url")
@@ -130,6 +135,7 @@ async def image_generate(
130135
)
131136
output_part = None
132137
if response.data and len(response.data) > 0:
138+
logger.debug(f"task {idx} Image generate response: {response}")
133139
for item in response.data:
134140
if response_format == "url":
135141
image = item.url
@@ -164,7 +170,9 @@ async def image_generate(
164170
continue
165171

166172
logger.debug(f"Image saved as ADK artifact: {image_name}")
167-
173+
logger.debug(
174+
f"Image {image_name} generated successfully: {image}"
175+
)
168176
success_list.append({image_name: image})
169177
else:
170178
error_details = f"No images returned by Doubao model: {response}"
@@ -192,12 +200,18 @@ async def image_generate(
192200
error_list.append(image_name)
193201

194202
if len(success_list) == 0:
203+
logger.debug(
204+
f"image_generate success_list: {success_list}\nerror_list: {error_list}"
205+
)
195206
return {
196207
"status": "error",
197208
"success_list": success_list,
198209
"error_list": error_list,
199210
}
200211
else:
212+
logger.debug(
213+
f"image_generate success_list: {success_list}\nerror_list: {error_list}"
214+
)
201215
return {
202216
"status": "success",
203217
"success_list": success_list,

veadk/tools/builtin_tools/video_generate.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,13 @@
4343
async def generate(prompt, first_frame_image=None, last_frame_image=None):
4444
try:
4545
if first_frame_image is None:
46-
logger.debug("text generation")
4746
response = client.content_generation.tasks.create(
4847
model=getenv("MODEL_VIDEO_NAME", DEFAULT_VIDEO_MODEL_NAME),
4948
content=[
5049
{"type": "text", "text": prompt},
5150
],
5251
)
5352
elif last_frame_image is None:
54-
logger.debug("first frame generation")
5553
response = client.content_generation.tasks.create(
5654
model=getenv("MODEL_VIDEO_NAME", DEFAULT_VIDEO_MODEL_NAME),
5755
content=cast(
@@ -66,7 +64,6 @@ async def generate(prompt, first_frame_image=None, last_frame_image=None):
6664
),
6765
)
6866
else:
69-
logger.debug("last frame generation")
7067
response = client.content_generation.tasks.create(
7168
model=getenv("MODEL_VIDEO_NAME", DEFAULT_VIDEO_MODEL_NAME),
7269
content=[
@@ -197,9 +194,13 @@ async def video_generate(params: list, tool_context: ToolContext) -> Dict:
197194
batch_size = 10
198195
success_list = []
199196
error_list = []
197+
logger.debug(f"Using model: {getenv('MODEL_VIDEO_NAME', DEFAULT_VIDEO_MODEL_NAME)}")
198+
logger.debug(f"video_generate params: {params}")
200199

201200
for start_idx in range(0, len(params), batch_size):
202201
batch = params[start_idx : start_idx + batch_size]
202+
logger.debug(f"video_generate batch {start_idx // batch_size}: {batch}")
203+
203204
task_dict = {}
204205
tracer = trace.get_tracer("gcp.vertex.agent")
205206
with tracer.start_as_current_span("call_llm") as span:
@@ -216,15 +217,30 @@ async def video_generate(params: list, tool_context: ToolContext) -> Dict:
216217
last_frame = item.get("last_frame", None)
217218
try:
218219
if not first_frame:
220+
logger.debug(
221+
f"video_generate task_{idx} text generation: prompt={prompt}"
222+
)
219223
response = await generate(prompt)
220224
elif not last_frame:
225+
logger.debug(
226+
f"video_generate task_{idx} first frame generation: prompt={prompt}, first_frame={first_frame}"
227+
)
221228
response = await generate(prompt, first_frame)
222229
else:
230+
logger.debug(
231+
f"video_generate task_{idx} first and last frame generation: prompt={prompt}, first_frame={first_frame}, last_frame={last_frame}"
232+
)
223233
response = await generate(prompt, first_frame, last_frame)
234+
logger.debug(
235+
f"batch_{start_idx // batch_size} video_generate task_{idx} response: {response}"
236+
)
224237
task_dict[response.id] = video_name
225238
except Exception as e:
226239
logger.error(f"Error: {e}")
227240
error_list.append(video_name)
241+
continue
242+
243+
logger.debug("begin query video_generate task status...")
228244

229245
while True:
230246
task_list = list(task_dict.keys())
@@ -234,7 +250,9 @@ async def video_generate(params: list, tool_context: ToolContext) -> Dict:
234250
result = client.content_generation.tasks.get(task_id=task_id)
235251
status = result.status
236252
if status == "succeeded":
237-
logger.debug("----- task succeeded -----")
253+
logger.debug(
254+
f"{task_dict[task_id]} video_generate {status}. Video URL: {result.content.video_url}"
255+
)
238256
tool_context.state[f"{task_dict[task_id]}_video_url"] = (
239257
result.content.video_url
240258
)
@@ -248,13 +266,14 @@ async def video_generate(params: list, tool_context: ToolContext) -> Dict:
248266
)
249267
task_dict.pop(task_id, None)
250268
elif status == "failed":
251-
logger.error("----- task failed -----")
252-
logger.error(f"Error: {result.error}")
269+
logger.error(
270+
f"{task_dict[task_id]} video_generate {status}. Error: {result.error}"
271+
)
253272
error_list.append(task_dict[task_id])
254273
task_dict.pop(task_id, None)
255274
else:
256275
logger.debug(
257-
f"Current status: {status}, Retrying after 10 seconds..."
276+
f"{task_dict[task_id]} video_generate current status: {status}, Retrying after 10 seconds..."
258277
)
259278
time.sleep(10)
260279

@@ -270,12 +289,18 @@ async def video_generate(params: list, tool_context: ToolContext) -> Dict:
270289
)
271290

272291
if len(success_list) == 0:
292+
logger.debug(
293+
f"video_generate success_list: {success_list}\nerror_list: {error_list}"
294+
)
273295
return {
274296
"status": "error",
275297
"success_list": success_list,
276298
"error_list": error_list,
277299
}
278300
else:
301+
logger.debug(
302+
f"video_generate success_list: {success_list}\nerror_list: {error_list}"
303+
)
279304
return {
280305
"status": "success",
281306
"success_list": success_list,

0 commit comments

Comments
 (0)