Spaces:
Sleeping
Sleeping
Upload folder using huggingface_hub
Browse files- inference.py +28 -3
- server/app.py +9 -12
inference.py
CHANGED
|
@@ -20,6 +20,10 @@ import textwrap
|
|
| 20 |
from typing import List, Optional
|
| 21 |
|
| 22 |
from openai import OpenAI
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
|
| 24 |
from token_optimiser import TokenOptimiserEnv, TokenOptimiserAction
|
| 25 |
|
|
@@ -28,10 +32,9 @@ from token_optimiser import TokenOptimiserEnv, TokenOptimiserAction
|
|
| 28 |
# ---------------------------------------------------------------------------
|
| 29 |
API_BASE_URL: str = os.getenv("API_BASE_URL", "https://router.huggingface.co/v1")
|
| 30 |
MODEL_NAME: str = os.getenv("MODEL_NAME", "Qwen/Qwen2.5-72B-Instruct")
|
| 31 |
-
HF_TOKEN: Optional[str] = os.getenv("HF_TOKEN") or os.getenv("API_KEY")
|
| 32 |
SERVER_URL: str = os.getenv("SERVER_URL", "http://localhost:8000")
|
| 33 |
LOCAL_IMAGE_NAME: Optional[str] = os.getenv("LOCAL_IMAGE_NAME")
|
| 34 |
-
|
| 35 |
TASK_NAME: str = "token_optimization"
|
| 36 |
BENCHMARK: str = "token_optimiser"
|
| 37 |
MAX_STEPS: int = 5
|
|
@@ -39,6 +42,28 @@ TEMPERATURE: float = 0.3
|
|
| 39 |
MAX_TOKENS: int = 200
|
| 40 |
SUCCESS_THRESHOLD: float = 0.6
|
| 41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
SYSTEM_PROMPT = textwrap.dedent("""
|
| 43 |
You are a prompt optimization expert. Rewrite the given prompt to:
|
| 44 |
1. Use the fewest possible tokens (concise language, no filler words)
|
|
@@ -257,4 +282,4 @@ async def main() -> None:
|
|
| 257 |
|
| 258 |
|
| 259 |
if __name__ == "__main__":
|
| 260 |
-
asyncio.run(main())
|
|
|
|
| 20 |
from typing import List, Optional
|
| 21 |
|
| 22 |
from openai import OpenAI
|
| 23 |
+
try:
|
| 24 |
+
from huggingface_hub import HfFolder
|
| 25 |
+
except Exception: # pragma: no cover
|
| 26 |
+
HfFolder = None
|
| 27 |
|
| 28 |
from token_optimiser import TokenOptimiserEnv, TokenOptimiserAction
|
| 29 |
|
|
|
|
| 32 |
# ---------------------------------------------------------------------------
|
| 33 |
API_BASE_URL: str = os.getenv("API_BASE_URL", "https://router.huggingface.co/v1")
|
| 34 |
MODEL_NAME: str = os.getenv("MODEL_NAME", "Qwen/Qwen2.5-72B-Instruct")
|
|
|
|
| 35 |
SERVER_URL: str = os.getenv("SERVER_URL", "http://localhost:8000")
|
| 36 |
LOCAL_IMAGE_NAME: Optional[str] = os.getenv("LOCAL_IMAGE_NAME")
|
| 37 |
+
HF_TOKEN: Optional[str] = os.getenv("HF_TOKEN")
|
| 38 |
TASK_NAME: str = "token_optimization"
|
| 39 |
BENCHMARK: str = "token_optimiser"
|
| 40 |
MAX_STEPS: int = 5
|
|
|
|
| 42 |
MAX_TOKENS: int = 200
|
| 43 |
SUCCESS_THRESHOLD: float = 0.6
|
| 44 |
|
| 45 |
+
|
| 46 |
+
def _resolve_hf_token() -> Optional[str]:
|
| 47 |
+
"""
|
| 48 |
+
Resolve API token in this order:
|
| 49 |
+
1) HF_TOKEN env var
|
| 50 |
+
2) API_KEY env var
|
| 51 |
+
3) huggingface-cli cached login token
|
| 52 |
+
"""
|
| 53 |
+
token = os.getenv("HF_TOKEN") or os.getenv("API_KEY")
|
| 54 |
+
if token:
|
| 55 |
+
return token
|
| 56 |
+
|
| 57 |
+
if HfFolder is not None:
|
| 58 |
+
try:
|
| 59 |
+
return HfFolder.get_token()
|
| 60 |
+
except Exception:
|
| 61 |
+
return None
|
| 62 |
+
return None
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
HF_TOKEN: Optional[str] = _resolve_hf_token()
|
| 66 |
+
|
| 67 |
SYSTEM_PROMPT = textwrap.dedent("""
|
| 68 |
You are a prompt optimization expert. Rewrite the given prompt to:
|
| 69 |
1. Use the fewest possible tokens (concise language, no filler words)
|
|
|
|
| 282 |
|
| 283 |
|
| 284 |
if __name__ == "__main__":
|
| 285 |
+
asyncio.run(main())
|
server/app.py
CHANGED
|
@@ -54,7 +54,7 @@ app = create_app(
|
|
| 54 |
)
|
| 55 |
|
| 56 |
|
| 57 |
-
def main(
|
| 58 |
"""
|
| 59 |
Entry point for direct execution via uv run or python -m.
|
| 60 |
|
|
@@ -63,23 +63,20 @@ def main(host: str = "0.0.0.0", port: int = 8000):
|
|
| 63 |
uv run --project . server --port 8001
|
| 64 |
python -m token_optimiser.server.app
|
| 65 |
|
| 66 |
-
Args:
|
| 67 |
-
host: Host address to bind to (default: "0.0.0.0")
|
| 68 |
-
port: Port number to listen on (default: 8000)
|
| 69 |
-
|
| 70 |
For production deployments, consider using uvicorn directly with
|
| 71 |
multiple workers:
|
| 72 |
uvicorn token_optimiser.server.app:app --workers 4
|
| 73 |
"""
|
| 74 |
-
import uvicorn
|
| 75 |
-
|
| 76 |
-
uvicorn.run(app, host=host, port=port)
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
if __name__ == "__main__":
|
| 80 |
import argparse
|
|
|
|
| 81 |
|
| 82 |
parser = argparse.ArgumentParser()
|
|
|
|
| 83 |
parser.add_argument("--port", type=int, default=8000)
|
| 84 |
args = parser.parse_args()
|
| 85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
)
|
| 55 |
|
| 56 |
|
| 57 |
+
def main() -> None:
|
| 58 |
"""
|
| 59 |
Entry point for direct execution via uv run or python -m.
|
| 60 |
|
|
|
|
| 63 |
uv run --project . server --port 8001
|
| 64 |
python -m token_optimiser.server.app
|
| 65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
For production deployments, consider using uvicorn directly with
|
| 67 |
multiple workers:
|
| 68 |
uvicorn token_optimiser.server.app:app --workers 4
|
| 69 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
import argparse
|
| 71 |
+
import uvicorn
|
| 72 |
|
| 73 |
parser = argparse.ArgumentParser()
|
| 74 |
+
parser.add_argument("--host", type=str, default="0.0.0.0")
|
| 75 |
parser.add_argument("--port", type=int, default=8000)
|
| 76 |
args = parser.parse_args()
|
| 77 |
+
|
| 78 |
+
uvicorn.run(app, host=args.host, port=args.port)
|
| 79 |
+
|
| 80 |
+
|
| 81 |
+
if __name__ == "__main__":
|
| 82 |
+
main()
|