add @tool-analyze_chess_position
Browse files- my_tools.py +41 -2
my_tools.py
CHANGED
|
@@ -122,10 +122,49 @@ def analyze_media_file(file_path: str) -> str:
|
|
| 122 |
except Exception as e:
|
| 123 |
return f"Error analyzing file: {str(e)}"
|
| 124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
|
|
|
| 126 |
my_tool_list = [
|
| 127 |
WikipediaSearchTool(),
|
| 128 |
-
DuckDuckGoSearchTool(),
|
| 129 |
tavily_search,
|
| 130 |
analyze_media_file,
|
| 131 |
-
|
|
|
|
|
|
| 122 |
except Exception as e:
|
| 123 |
return f"Error analyzing file: {str(e)}"
|
| 124 |
|
| 125 |
+
@tool
|
| 126 |
+
def analyze_chess_position(file_path: str) -> str:
|
| 127 |
+
"""
|
| 128 |
+
分析棋盘位置,尝试识别棋局
|
| 129 |
+
Args:
|
| 130 |
+
file_path: 棋盘图像路径
|
| 131 |
+
Returns:
|
| 132 |
+
棋局分析结果
|
| 133 |
+
"""
|
| 134 |
+
if not os.path.exists(file_path):
|
| 135 |
+
return f"File not found: {file_path}"
|
| 136 |
+
|
| 137 |
+
try:
|
| 138 |
+
file_size = os.path.getsize(file_path)
|
| 139 |
+
result = f"Chess board image found: {os.path.basename(file_path)} ({file_size} bytes)\n"
|
| 140 |
+
|
| 141 |
+
# 由于PIL被限制,我们提供一些通用的棋局分析提示
|
| 142 |
+
result += """
|
| 143 |
+
Based on typical chess endgame patterns, common winning moves include:
|
| 144 |
+
- Queen checks that lead to checkmate (Qd1+, Qe1+, etc.)
|
| 145 |
+
- Rook moves that create back-rank threats
|
| 146 |
+
- Knight forks that win material
|
| 147 |
+
- Bishop moves that control key squares
|
| 148 |
+
|
| 149 |
+
For endgame puzzles, look for:
|
| 150 |
+
1. Checks that force the king to a bad square
|
| 151 |
+
2. Pins and skewers
|
| 152 |
+
3. Back-rank weaknesses
|
| 153 |
+
4. Knight forks
|
| 154 |
+
5. Zugzwang positions
|
| 155 |
+
|
| 156 |
+
Without being able to process the image directly, I recommend using chess knowledge and pattern recognition.
|
| 157 |
+
"""
|
| 158 |
+
|
| 159 |
+
return result
|
| 160 |
+
except Exception as e:
|
| 161 |
+
return f"Error analyzing chess position: {str(e)}"
|
| 162 |
|
| 163 |
+
# 更新工具列表
|
| 164 |
my_tool_list = [
|
| 165 |
WikipediaSearchTool(),
|
| 166 |
+
DuckDuckGoSearchTool(),
|
| 167 |
tavily_search,
|
| 168 |
analyze_media_file,
|
| 169 |
+
analyze_chess_position,
|
| 170 |
+
]
|