Source code for trinity.explorer.explorer_client
from functools import partial
import httpx
import openai
import requests
[docs]
class ExplorerClient:
[docs]
def __init__(self, base_url: str):
self.base_url = base_url
self.session_id = self.init_session()
[docs]
def init_session(self) -> str:
response = requests.post(f"{self.base_url}/allocate")
data = response.json()
return data["session_id"]
[docs]
def get_openai_client(self) -> openai.OpenAI:
client = openai.OpenAI(
base_url=self.base_url + "/v1",
api_key="EMPTY",
)
client.chat.completions.create = partial(
client.chat.completions.create, extra_body={"session_id": self.session_id}
)
return client
[docs]
def get_openai_async_client(self) -> openai.AsyncOpenAI:
client = openai.AsyncOpenAI(
base_url=self.base_url + "/v1",
api_key="EMPTY",
)
client.chat.completions.create = partial(
client.chat.completions.create, extra_body={"session_id": self.session_id}
)
return client
[docs]
def feedback(self, reward: float):
response = requests.post(
f"{self.base_url}/feedback", json={"session_id": self.session_id, "reward": reward}
)
return response.json()
[docs]
async def feedback_async(self, reward: float):
async with httpx.AsyncClient() as client:
response = await client.post(
f"{self.base_url}/feedback", json={"session_id": self.session_id, "reward": reward}
)
return response.json()