llm_host / static /index.html
Bahodir Nematjonov
index files updated
667244c
raw
history blame
18.4 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LLM Host API Documentation</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/prismjs/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" />
<link href="style.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<nav class="sidebar">
<div class="logo">
🔗 LLM Host API
</div>
<div class="nav-items">
<!-- Navigation items will be populated by JavaScript -->
</div>
</nav>
<main class="content">
<h1>LLM Host API</h1>
<section id="endpoints">
<h2>Endpoints</h2>
<div class="endpoint" id="register">
<h3>1. Register Endpoint</h3>
<p><span class="method">POST</span><span class="endpoint-url">/register</span></p>
<p>This endpoint is used to register the username and password.</p>
<h4>cURL Request:</h4>
<pre><code class="language-bash">curl -X POST 'https://humblebeeai-llm-host.hf.space/register' \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"password": "testpassword"
}'</code></pre>
<h4>Python Implementation:</h4>
<pre><code class="language-python">
import requests
import json
class RegisterResponse:
"""Class to handle API response"""
def __init__(self, message, user):
self.message = message
self.user = user
@classmethod
def from_json(cls, json_data):
return cls(
message=json_data.get("message"),
user=json_data.get("user")
)
def register(username: str, password: str):
"""Sends a POST request to register a new user."""
url = "https://humblebeeai-llm-host.hf.space/register"
headers = {"Content-Type": "application/json"}
payload = {"username": username, "password": password}
try:
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
return RegisterResponse.from_json(response.json())
else:
raise Exception(f"Failed to register: {response.text}")
except requests.exceptions.RequestException as e:
raise Exception(f"Network error: {e}")
# Example usage
try:
result = register("testuser", "testpassword")
print(f"✅ Registration successful! User: {result.user}, Message: {result.message}")
except Exception as e:
print(f"⚠️ Error: {e}")
</code></pre>
<h4>Response:</h4>
<pre><code class="language-json">{"message":"User registered successfully","user":"bahodir"}</code></pre>
</div>
<div class="endpoint" id="login">
<h3>2. Login Endpoint</h3>
<p><span class="method">POST</span><span class="endpoint-url">/login</span></p>
<p>This endpoint is used to authenticate a user and retrieve an access token.</p>
<h4>cURL Request:</h4>
<pre><code class="language-bash">curl -X POST 'https://humblebeeai-llm-host.hf.space/login' \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'username=testuser&password=testpassword'</code></pre>
<h4>Python Implementation:</h4>
<pre><code class="language-python">
import requests
class LoginResponse:
"""Class to handle API login response"""
def __init__(self, access_token, refresh_token, token_type):
self.access_token = access_token
self.refresh_token = refresh_token
self.token_type = token_type
@classmethod
def from_json(cls, json_data):
return cls(
access_token=json_data.get("access_token"),
refresh_token=json_data.get("refresh_token"),
token_type=json_data.get("token_type"),
)
def login(username: str, password: str):
"""Sends a POST request to authenticate a user."""
url = "https://humblebeeai-llm-host.hf.space/login"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
payload = {"username": username, "password": password}
try:
response = requests.post(url, data=payload, headers=headers)
if response.status_code == 200:
return LoginResponse.from_json(response.json())
else:
raise Exception(f"Failed to login: {response.text}")
except requests.exceptions.RequestException as e:
raise Exception(f"Network error: {e}")
# Example usage
try:
result = login("testuser", "testpassword")
print(f"✅ Login successful! Access Token: {result.access_token}")
except Exception as e:
print(f"⚠️ Error: {e}")
</code></pre>
<h4>Response:</h4>
<pre><code class="language-json">{ "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlciIsImV4cCI6MTczOTE3Nzg5N30.jUfB7vHA4HGrpDiI08cpKGR7s3DOVrchhpf5yBz0hCc",
"token_type":"bearer",
"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0dXNlciIsImV4cCI6MTczOTc4MDg5N30.L9_5hGR_lUskUINccE51fOA1-8NOgmQ2bjBK3iMS-K8"}</code></pre>
</div>
<div class="endpoint" id="refresh">
<h3>3. Refresh Token Endpoint</h3>
<p><span class="method">POST</span><span class="endpoint-url">/refresh</span></p>
<p>This endpoint is used to refresh the access token using a valid refresh token.</p>
<h4>cURL Request:</h4>
<pre><code class="language-bash">curl -X POST 'https://humblebeeai-llm-host.hf.space/refresh' \
-H "Content-Type: application/json" \
-d '{"refresh_token": "your-refresh-token"}'</code></pre>
<h4>Python Implementation:</h4>
<pre><code class="language-python">
import requests
import json
class RefreshResponse:
"""Class to handle API refresh response"""
def __init__(self, access_token, refresh_token, token_type):
self.access_token = access_token
self.refresh_token = refresh_token
self.token_type = token_type
@classmethod
def from_json(cls, json_data):
return cls(
access_token=json_data.get("access_token"),
refresh_token=json_data.get("refresh_token"),
token_type=json_data.get("token_type"),
)
def refresh_token(refresh_token: str):
"""Sends a POST request to refresh the access token."""
url = "https://humblebeeai-llm-host.hf.space/refresh"
headers = {"Content-Type": "application/json"}
payload = {"refresh_token": refresh_token}
try:
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
return RefreshResponse.from_json(response.json())
else:
raise Exception(f"Failed to refresh token: {response.text}")
except requests.exceptions.RequestException as e:
raise Exception(f"Network error: {e}")
# Example usage
try:
result = refresh_token("your-refresh-token")
print(f"✅ Token refreshed! New Access Token: {result.access_token}")
except Exception as e:
print(f"⚠️ Error: {e}")
</code></pre>
<h4>Response:</h4>
<pre><code class="language-json">{
"access_token": "new-access-token",
"refresh_token": "your-refresh-token",
"token_type": "bearer"
}</code></pre>
</div>
<div class="endpoint" id="search">
<h3>4. Search Endpoint</h3>
<p><span class="method">POST</span><span class="endpoint-url">/search</span></p>
<p>This endpoint is used to send a search query and retrieve results. It requires a valid access token.</p>
<h4>cURL Request:</h4>
<pre><code class="language-bash">curl -X POST 'https://humblebeeai-llm-host.hf.space/search' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-access-token" \
-d '{"query": "test query"}'</code></pre>
<h4>Python Implementation:</h4>
<pre><code class="language-python">
import requests
import json
class SearchResult:
"""Class to handle search results"""
def __init__(self, text, similarity, model_type):
self.text = text
self.similarity = similarity
self.model_type = model_type
@classmethod
def from_json(cls, json_data):
return cls(
text=json_data.get("text"),
similarity=json_data.get("similarity"),
model_type=json_data.get("model_type"),
)
def search(query: str, access_token: str):
"""Sends a search query and retrieves results."""
url = "https://humblebeeai-llm-host.hf.space/search"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}"
}
payload = {"query": query}
try:
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
json_list = response.json()
return [SearchResult.from_json(item) for item in json_list]
else:
raise Exception(f"Search failed: {response.text}")
except requests.exceptions.RequestException as e:
raise Exception(f"Network error: {e}")
# Example usage
try:
results = search("test query", "your-access-token")
for result in results:
print(f"✅ Found: {result.text} (Similarity: {result.similarity}, Model: {result.model_type})")
except Exception as e:
print(f"⚠️ Error: {e}")
</code></pre>
<h4>Response:</h4>
<pre><code class="language-json">
response based on query
</code></pre>
</div>
</section>
<section id="workflow">
<h2>Workflow Example</h2>
<p>Here's a complete workflow demonstrating how to use the API:</p>
<h3>cURL Implementation</h3>
<div class="endpoint">
<h3>Step 1: Login</h3>
<pre><code class="language-bash">curl -X POST https://humblebeeai-llm-host.hf.space/login \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'username=user123&password=password123'</code></pre>
</div>
<div class="endpoint">
<h3>Step 2: Search</h3>
<pre><code class="language-bash">curl -X POST https://humblebeeai-llm-host.hf.space/search \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-access-token" \
-d '{"query": "test query"}'</code></pre>
</div>
<div class="endpoint">
<h3>Step 3: Refresh Token</h3>
<pre><code class="language-bash">curl -X POST https://humblebeeai-llm-host.hf.space/refresh \
-H "Content-Type: application/json" \
-d '{"refresh_token": "your-refresh-token"}'</code></pre>
</div>
<h3>Python Implementation</h3>
<div class="endpoint">
<h4>Complete Python Example</h4>
<pre><code class="language-python">
import requests
import json
API_BASE_URL = "https://humblebeeai-llm-host.hf.space"
class APIClient:
"""Handles the full API workflow"""
def __init__(self):
self.access_token = None
self.refresh_token = None
def login(self, username: str, password: str):
"""Authenticates the user and retrieves tokens"""
url = f"{API_BASE_URL}/login"
payload = {"username": username, "password": password}
headers = {"Content-Type": "application/x-www-form-urlencoded"}
response = requests.post(url, data=payload, headers=headers)
if response.status_code == 200:
tokens = response.json()
self.access_token = tokens.get("access_token")
self.refresh_token = tokens.get("refresh_token")
print(f"✅ Login successful! Token: {self.access_token}")
else:
raise Exception(f"⚠️ Login failed: {response.text}")
def search(self, query: str):
"""Performs a search query"""
url = f"{API_BASE_URL}/search"
payload = {"query": query}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {self.access_token}",
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
results = response.json()
print("✅ Search results:", results)
return results
else:
raise Exception(f"⚠️ Search failed: {response.text}")
def save_data(self, items: list):
"""Saves retrieved data"""
url = f"{API_BASE_URL}/save"
payload = {"items": items}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {self.access_token}",
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
print("✅ Data saved successfully!")
else:
raise Exception(f"⚠️ Failed to save data: {response.text}")
def refresh_token(self):
"""Refreshes access token"""
url = f"{API_BASE_URL}/refresh"
payload = {"refresh_token": self.refresh_token}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
tokens = response.json()
self.access_token = tokens.get("access_token")
print(f"✅ Token refreshed! New Token: {self.access_token}")
else:
raise Exception(f"⚠️ Token refresh failed: {response.text}")
# Example Usage
client = APIClient()
try:
# Step 1: Login
client.login("user123", "password123")
# Step 2: Perform Search
search_results = client.search("test query")
# Step 3: Save Data (assuming we got some results)
if search_results:
save_items = [
{
"user_type": "user",
"username": "user123",
"query": "test query",
"retrieved_text": search_results[0]["text"],
"model_type": search_results[0]["model_type"],
"reaction": "positive",
}
]
client.save_data(save_items)
# Step 4: Refresh Token
client.refresh_token()
except Exception as e:
print(f"⚠️ Error: {e}")
</code></pre>
</div>
<h4>Response:</h4>
<pre><code class="language-json">{
"access_token": "your-access-token",
"refresh_token": "your-refresh-token",
"token_type": "bearer",
}</code></pre>
</section>
</main>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prismjs/1.29.0/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prismjs/1.29.0/components/prism-bash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prismjs/1.29.0/components/prism-json.min.js"></script>
<script src="script.js"></script>
</body>
</html>