Bagoodex-Web-Search / bagoodex_client.py
abdibrokhim's picture
tons of changes
21ffffb
import os
import requests
from openai import OpenAI
from dotenv import load_dotenv
from r_types import ChatMessage
from prompts import SYSTEM_PROMPT_BASE, SYSTEM_PROMPT_MAP
from typing import List
load_dotenv()
API_KEY = os.getenv("AIML_API_KEY")
API_URL = "https://api.aimlapi.com"
class BagoodexClient:
def __init__(self, api_key=API_KEY, api_url=API_URL):
self.api_key = api_key
self.api_url = api_url
self.client = OpenAI(base_url=self.api_url, api_key=self.api_key)
def complete_chat(self, query):
"""
Calls the standard chat completion endpoint using the provided query.
Returns the generated followup ID and the text response.
"""
response = self.client.chat.completions.create(
model="bagoodex/bagoodex-search-v1",
messages=[
ChatMessage(role="user", content=SYSTEM_PROMPT_BASE),
ChatMessage(role="user", content=query)
],
)
followup_id = response.id # the unique ID for follow-up searches
answer = response.choices[0].message.content
return followup_id, answer
def base_qna(self, messages: List[ChatMessage], system_prompt=SYSTEM_PROMPT_BASE):
response = self.client.chat.completions.create(
model="gpt-4o",
messages=[
ChatMessage(role="user", content=system_prompt),
*messages
],
)
return response.choices[0].message.content
def get_links(self, followup_id):
headers = {"Authorization": f"Bearer {self.api_key}"}
params = {"followup_id": followup_id}
response = requests.get(
f"{self.api_url}/v1/bagoodex/links", headers=headers, params=params
)
return response.json()
def get_images(self, followup_id):
headers = {"Authorization": f"Bearer {self.api_key}"}
params = {"followup_id": followup_id}
response = requests.get(
f"{self.api_url}/v1/bagoodex/images", headers=headers, params=params
)
return response.json()
def get_videos(self, followup_id):
headers = {"Authorization": f"Bearer {self.api_key}"}
params = {"followup_id": followup_id}
response = requests.get(
f"{self.api_url}/v1/bagoodex/videos", headers=headers, params=params
)
return response.json()
def get_local_map(self, followup_id):
headers = {"Authorization": f"Bearer {self.api_key}"}
params = {"followup_id": followup_id}
response = requests.get(
f"{self.api_url}/v1/bagoodex/local-map", headers=headers, params=params
)
return response.json()
def get_knowledge(self, followup_id):
headers = {"Authorization": f"Bearer {self.api_key}"}
params = {"followup_id": followup_id}
response = requests.get(
f"{self.api_url}/v1/bagoodex/knowledge", headers=headers, params=params
)
return response.json()