added rp api

This commit is contained in:
2026-06-10 11:49:01 +03:00
parent 73baf4dbe1
commit f407e41b6d
13 changed files with 397 additions and 22 deletions
+19 -9
View File
@@ -5,8 +5,8 @@ from sqlalchemy.orm import Session
from app.fitness.service import FitnessService
from app.fitness.structuring import structure_meal, structure_workout
from app.homelab.comfyui import ComfyUIClient
from app.homelab.digest import build_weather_briefing
from app.homelab.image_gen import generate_image as run_generate_image
from app.homelab.openmeteo import OpenMeteoClient
from app.integrations.openfoodfacts import OpenFoodFactsClient
from app.integrations.wger import WgerClient
@@ -475,16 +475,24 @@ TOOL_DEFINITIONS: list[dict[str, Any]] = [
"function": {
"name": "generate_image",
"description": (
"Сгенерировать картинку через ComfyUI на домашнем GPU. "
"Только по явному запросу или редко по рофлу."
"Аниме-картинка (Anima через RP-чат). "
"«Нарисуй себя» / портрет персонажа → draw_self=true. "
"Другая сцена → scene_description на английском (booru-теги). "
"Внешность берётся из карточки персонажа. Только по запросу или когда уместно."
),
"parameters": {
"type": "object",
"properties": {
"prompt": {"type": "string", "description": "Описание картинки на английском"},
"negative_prompt": {"type": "string"},
"draw_self": {
"type": "boolean",
"description": "Нарисовать персонажа из карточки в контексте текущего чата",
},
"scene_description": {
"type": "string",
"description": "Описание сцены на английском (booru-теги), если не draw_self",
},
},
"required": ["prompt"],
"required": [],
},
},
},
@@ -666,9 +674,11 @@ async def execute_tool(
include_news=bool(include_news),
)
elif name == "generate_image":
result = await ComfyUIClient().generate_image(
arguments.get("prompt", ""),
negative_prompt=arguments.get("negative_prompt"),
result = await run_generate_image(
db,
session_id=session_id,
draw_self=bool(arguments.get("draw_self")),
scene_description=arguments.get("scene_description", ""),
)
else:
return json.dumps({"error": f"Unknown tool: {name}"}, ensure_ascii=False)