from langchain_core.tools import tool from app.tools.java_client import JavaClient import logging logger = logging.getLogger(__name__) _java = JavaClient() @tool async def search_product_by_keyword(keyword: str, limit: int = 5) -> str: """按关键词搜索上架商品, 返回 JSON 商品列表""" try: products = await _java.search_products(keyword, limit) if not products: return "[]" return str([{ "id": p["id"], "name": p["name"], "price": p.get("price"), "description": p.get("intro") or p.get("description", ""), } for p in products]) except Exception as e: logger.warning("搜索商品失败: %s", e) return "[]" @tool async def search_activity_by_keyword(keyword: str, limit: int = 5) -> str: """按关键词搜索进行中的活动, 返回 JSON 活动列表""" try: activities = await _java.search_activities(keyword, limit) if not activities: return "[]" return str([{ "id": a["id"], "name": a["title"], "description": a.get("description", ""), } for a in activities]) except Exception as e: logger.warning("搜索活动失败: %s", e) return "[]" @tool async def search_article_by_keyword(keyword: str, limit: int = 5) -> str: """按关键词搜索已发布文章, 返回 JSON 文章列表""" try: articles = await _java.search_articles(keyword, limit) if not articles: return "[]" return str([{ "id": a["id"], "name": a["title"], "summary": a.get("summary", ""), } for a in articles]) except Exception as e: logger.warning("搜索文章失败: %s", e) return "[]"