An interactive Hugging Face Space for a Quest DeepResearch agent. The app
can either talk to osunlp/QUEST-35B (our own fine-tuned research model,
routed through a private HF Inference Endpoint) or fall back to open-weights
models through the shared HF Inference API.
Supported tools:
search (DuckDuckGo, multi-query)visit (HTTP fetch + text extraction, multi-URL)google_scholar (Serper, multi-query)<answer> extraction for the final responsePythonInterpreter is not available in this Space (no sandbox service).
To try it, use offline inference
from the GitHub repo with ENABLE_PYTHON_TOOL=true.
osunlp/QUEST-35B model (recommended)Because the model is private during the beta, it is not on the free Inference API. You host it yourself on a dedicated HF Inference Endpoint (pay-as-you-go, scale-to-zero), and point this Space at it.
osunlp/QUEST-35B (use a token with access).1x Nvidia L4 (24GB) is usually the sweet spot for a 35B
model. Nvidia T4 small (16GB) works too and is cheaper.Text Generation Inference (TGI) or
pick vLLM. Both expose an OpenAI-compatible /v1/ route.Running and shows a
base URL like https://abcdef.us-east-1.aws.endpoints.huggingface.cloud.In this Space's Settings β Secrets / Variables:
| Name | Value | Why |
|---|---|---|
HF_TOKEN | your personal HF token with read access to osunlp/QUEST-35B | pulls private weights & authenticates the endpoint call |
QUEST_BASE_URL | the endpoint URL ending with /v1/ (e.g. https://abcdef.us-east-1.aws.endpoints.huggingface.cloud/v1/) | tells the app to route chat completions to your endpoint |
QUEST_ENDPOINT_MODEL | tgi (default; set to the original repo id osunlp/QUEST-35B if you deployed with vLLM) | some containers need the exact model name |
DEFAULT_MODEL | osunlp/QUEST-35B | preselects the right option in the UI |
Click Restart this Space. The Model dropdown now shows
osunlp/QUEST-35B at the top; selecting it routes requests through your
endpoint.
Cost reality-check: on a 1Γ L4 at
$0.80/hrwith Scale-to-Zero, a small internal beta (a handful of testers, dozens of queries per day) typically stays under $100/month. You can stop the endpoint manually from the UI any time to freeze costs.
If you just want to try the UI without spinning up an endpoint, pick any of these in the dropdown. They run through the shared HF Inference API.
Qwen/Qwen3-8Bgoogle/gemma-3-12b-itdeepseek-ai/DeepSeek-R1-Distill-Qwen-7BQwen/Qwen2.5-7B-Instructmeta-llama/Llama-3.1-8B-InstructOnly HF_TOKEN is required for this path.
Option A (simplest, $0 for access, Space Hardware stays on free CPU):
Option B (org-level billing): upgrade the organization to a Team plan and recreate both the Space and the endpoint under the org namespace.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export HF_TOKEN=... # required
export QUEST_BASE_URL=https://.../v1/ # optional; only if testing against the endpoint
python app.py
app.py uses huggingface_hub.InferenceClient(base_url=QUEST_BASE_URL, ...)
for the private-endpoint path and the same client without base_url for the
shared API path.search / visit with an explicit goal), so the private model stays
in-distribution. The open-weights fallbacks also follow the same schema.<answer>...</answer> terminates the ReAct loop.An interactive Hugging Face Space for a Quest DeepResearch agent. The app
can either talk to osunlp/QUEST-35B (our own fine-tuned research model,
routed through a private HF Inference Endpoint) or fall back to open-weights
models through the shared HF Inference API.
Supported tools:
search (DuckDuckGo, multi-query)visit (HTTP fetch + text extraction, multi-URL)google_scholar (Serper, multi-query)<answer> extraction for the final responsePythonInterpreter is not available in this Space (no sandbox service).
To try it, use offline inference
from the GitHub repo with ENABLE_PYTHON_TOOL=true.
osunlp/QUEST-35B model (recommended)Because the model is private during the beta, it is not on the free Inference API. You host it yourself on a dedicated HF Inference Endpoint (pay-as-you-go, scale-to-zero), and point this Space at it.
osunlp/QUEST-35B (use a token with access).1x Nvidia L4 (24GB) is usually the sweet spot for a 35B
model. Nvidia T4 small (16GB) works too and is cheaper.Text Generation Inference (TGI) or
pick vLLM. Both expose an OpenAI-compatible /v1/ route.Running and shows a
base URL like https://abcdef.us-east-1.aws.endpoints.huggingface.cloud.In this Space's Settings β Secrets / Variables:
| Name | Value | Why |
|---|---|---|
HF_TOKEN | your personal HF token with read access to osunlp/QUEST-35B | pulls private weights & authenticates the endpoint call |
QUEST_BASE_URL | the endpoint URL ending with /v1/ (e.g. https://abcdef.us-east-1.aws.endpoints.huggingface.cloud/v1/) | tells the app to route chat completions to your endpoint |
QUEST_ENDPOINT_MODEL | tgi (default; set to the original repo id osunlp/QUEST-35B if you deployed with vLLM) | some containers need the exact model name |
DEFAULT_MODEL | osunlp/QUEST-35B | preselects the right option in the UI |
Click Restart this Space. The Model dropdown now shows
osunlp/QUEST-35B at the top; selecting it routes requests through your
endpoint.
Cost reality-check: on a 1Γ L4 at
$0.80/hrwith Scale-to-Zero, a small internal beta (a handful of testers, dozens of queries per day) typically stays under $100/month. You can stop the endpoint manually from the UI any time to freeze costs.
If you just want to try the UI without spinning up an endpoint, pick any of these in the dropdown. They run through the shared HF Inference API.
Qwen/Qwen3-8Bgoogle/gemma-3-12b-itdeepseek-ai/DeepSeek-R1-Distill-Qwen-7BQwen/Qwen2.5-7B-Instructmeta-llama/Llama-3.1-8B-InstructOnly HF_TOKEN is required for this path.
Option A (simplest, $0 for access, Space Hardware stays on free CPU):
Option B (org-level billing): upgrade the organization to a Team plan and recreate both the Space and the endpoint under the org namespace.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export HF_TOKEN=... # required
export QUEST_BASE_URL=https://.../v1/ # optional; only if testing against the endpoint
python app.py
app.py uses huggingface_hub.InferenceClient(base_url=QUEST_BASE_URL, ...)
for the private-endpoint path and the same client without base_url for the
shared API path.search / visit with an explicit goal), so the private model stays
in-distribution. The open-weights fallbacks also follow the same schema.<answer>...</answer> terminates the ReAct loop.