MCPcopy Create free account
hub / github.com/SenseTime-Copilot/raccoon-dataanalysis-skill / stream_request_example

Function stream_request_example

scripts/main.py:487–523  ·  view source on GitHub ↗

发送流式请求并打印增量输出(示例用)

(host, headers, method, path, data=None, files=None)

Source from the content-addressed store, hash-verified

485# ================================================================
486
487def stream_request_example(host, headers, method, path, data=None, files=None):
488 """发送流式请求并打印增量输出(示例用)"""
489 url = f"{host}{path}"
490 if method == "POST" and files:
491 h = {k: v for k, v in headers.items() if k != "Content-Type"}
492 resp = requests.post(url, headers=h, files=files, stream=True, timeout=120)
493 elif method == "POST":
494 resp = requests.post(url, headers=headers, json=data, stream=True, timeout=120)
495 else:
496 resp = requests.get(url, headers=headers, params=data, timeout=30)
497 return resp.json().get("data") if resp.status_code == 200 else None
498
499 if resp.status_code != 200:
500 print(f"HTTP {resp.status_code}: {resp.text[:200]}")
501 return None
502
503 result_text = ""
504 for line in resp.iter_lines():
505 if not line:
506 continue
507 line_str = line.decode("utf-8") if isinstance(line, bytes) else line
508 if not line_str.startswith("data:"):
509 continue
510 json_str = line_str[5:].strip()
511 if json_str == "[DONE]":
512 break
513 try:
514 obj = json.loads(json_str)
515 stage = obj.get("stage", "")
516 delta = obj.get("data", {}).get("delta", "")
517 if delta and stage in ("generate", "image"):
518 print(delta, end="", flush=True)
519 result_text += delta
520 except json.JSONDecodeError:
521 pass
522 print()
523 return result_text
524
525
526def example_data_analysis_flow():

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected