feat(hy3): add native support for tencent hunyuan 3 gradio space

This commit is contained in:
Luxferre
2026-09-07 07:56:39 +03:00
parent d1d7422099
commit 662a4d66b7
3 changed files with 690 additions and 95 deletions
+9 -3
View File
@@ -10,19 +10,25 @@ Default demo space: `https://ghost2513-openai-gpt-oss-120b.hf.space`
- **Zero External Dependencies**: Pure Go standard library (`net/http`, `encoding/json`, `bufio`, etc.).
- **Automatic Space Introspection**: Dynamically queries `/gradio_api/info`, `/config`, and Hugging Face space metadata to discover models, endpoints, and input parameter mappings.
- **Native Tencent Hunyuan 3 (`tencent-hy3`) Support**:
- Full native zero-degradation handling for official spaces like `https://tencent-hy3.hf.space`.
- Maps `functions_json_str` natively without polluting the system prompt.
- Preserves multi-turn reasoning content and tool call history in standard OpenAI message schemas.
- Maps `reasoning_effort` (`no_think`, `low`, `high`) directly to `think_level`.
- **Universal Multi-turn Handling**:
- Automatically formats conversation history into structured inputs when the space supports them.
- Transparently composes multi-turn dialogue (`System`, `User`, `Assistant`) into single prompt inputs when the space only accepts a single message textbox.
- Automatically pads hidden/State inputs (e.g. Gradio State components) to prevent backend argument count mismatches.
- **Real-Time Streaming & Accumulation Filter**:
- Automatically computes token deltas from cumulative or incremental Gradio SSE output streams.
- Automatically computes token deltas from cumulative or incremental Gradio SSE output streams (including 2D Hy3 frames `[[content, reasoning, tool_calls, history]]`).
- Emits standards-compliant `chat.completion.chunk` SSE events in real time.
- **Thinking & Reasoning Token Separation**:
- Detects `<think>...</think>` tags in real time.
- Streams native reasoning chunks as `delta.reasoning_content` in real time.
- Detects `<think>...</think>` tags in real time as fallback for standard spaces.
- Separates reasoning into `delta.reasoning_content` (streaming) and `message.reasoning_content` (non-streaming).
- Keeps `content` clean without tag leakage.
- **Full Tool Calling & Function Interception**:
- Formats schemas into system prompts with strict function calling instructions.
- Formats schemas into native `functions_json_str` (Hy3) or system prompts (standard spaces).
- **`StreamToolCallFilter`**: Stateful sliding-window filter that prevents `<tool_call>` tags from leaking into `delta.content`. Emits structured OpenAI `delta.tool_calls` chunks and sets `finish_reason: "tool_calls"`.
- Seamlessly maintains multi-turn context when tool results are submitted back via `role: "tool"`.
- **Built-in SOCKS5 Proxy Client**: