MCPcopy
hub / github.com/Sophomoresty/gemini-web2api / parse_tool_calls

Function parse_tool_calls

gemini_web2api/tools.py:120–143  ·  view source on GitHub ↗

Extract tool_call blocks. Returns (clean_text, tool_calls_list).

(text: str)

Source from the content-addressed store, hash-verified

118
119
120def parse_tool_calls(text: str) -> tuple:
121 """Extract tool_call blocks. Returns (clean_text, tool_calls_list)."""
122 tool_calls = []
123 pattern = r'```tool_call\s*\n(.*?)\n```'
124 clean_parts = []
125 last_end = 0
126 for m in re.finditer(pattern, text, re.DOTALL):
127 clean_parts.append(text[last_end:m.start()])
128 last_end = m.end()
129 try:
130 data = json.loads(m.group(1).strip())
131 tool_calls.append({
132 "id": f"call_{uuid.uuid4().hex[:8]}",
133 "type": "function",
134 "function": {
135 "name": data["name"],
136 "arguments": json.dumps(data.get("arguments", {}), ensure_ascii=False),
137 },
138 })
139 except (json.JSONDecodeError, KeyError):
140 pass
141 clean_parts.append(text[last_end:])
142 clean = "".join(clean_parts).strip()
143 return clean, tool_calls
144
145
146# ─── Google Native API helpers ─────────────────────────────────────────────────

Callers 2

_handle_chatMethod · 0.70
_handle_responsesMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected