Source code for trinity.explorer.proxy.client
import uuid
import httpx
import openai
import requests
[docs]
class TrinityClient:
[docs]
def __init__(self, proxy_url: str):
self.proxy_url = proxy_url
self.openai_base_url = f"{self.proxy_url}/v1"
self.feedback_url = f"{self.proxy_url}/feedback"
self.task_id = uuid.uuid4().hex[:6]
[docs]
def alive(self) -> bool:
try:
response = requests.get(f"{self.proxy_url}/health", timeout=2)
return response.status_code == 200
except requests.RequestException:
return False
[docs]
def get_openai_client(self) -> openai.OpenAI:
client = openai.OpenAI(
base_url=self.openai_base_url,
api_key="EMPTY",
)
return client
[docs]
def get_openai_async_client(self) -> openai.AsyncOpenAI:
client = openai.AsyncOpenAI(
base_url=self.openai_base_url,
api_key="EMPTY",
)
return client
[docs]
def feedback(self, reward: float, msg_ids: list[str], timeout: float = 10) -> dict:
response = requests.post(
self.feedback_url,
json={"reward": reward, "msg_ids": msg_ids, "task_id": self.task_id},
timeout=timeout,
)
return response.json()
[docs]
async def feedback_async(self, reward: float, msg_ids: list[str], timeout: float = 10) -> dict:
async with httpx.AsyncClient() as client:
response = await client.post(
self.feedback_url,
json={"reward": reward, "msg_ids": msg_ids, "task_id": self.task_id},
timeout=timeout,
)
return response.json()
[docs]
def commit(self, timeout: float = 10) -> dict:
response = requests.post(f"{self.proxy_url}/commit", timeout=timeout)
return response.json()
[docs]
async def commit_async(self, timeout: float = 10) -> dict:
async with httpx.AsyncClient() as client:
response = await client.post(f"{self.proxy_url}/commit", timeout=timeout)
return response.json()
[docs]
def get_metrics(self, timeout: float = 5) -> dict:
response = requests.get(f"{self.proxy_url}/metrics", timeout=timeout)
return response.json()
[docs]
async def get_metrics_async(self, timeout: float = 5) -> dict:
async with httpx.AsyncClient() as client:
response = await client.get(f"{self.proxy_url}/metrics", timeout=timeout)
if response.status_code != 200:
raise ValueError(f"Failed to get metrics: {response.text}")
return response.json()