11"""AI Service module for interacting with different LLM providers."""
22
33from typing import Optional
4-
4+ import logging
55import requests
66
77JAN_BASE_URL = "http://localhost:1337/v1/chat/completions"
1111class AIService :
1212 """Service for interacting with different AI providers."""
1313
14- def __init__ (self , service_type : str , model : Optional [str ] = None ):
14+ def __init__ (
15+ self , service_type : str , model : Optional [str ] = None , debug : bool = False
16+ ):
1517 """Initialize AI service.
1618
1719 Args:
1820 service_type: Type of AI service ('ollama' or 'jan')
1921 model: Model name to use
22+ debug: Whether to enable debug logging
2023 """
2124 self .service_type = service_type
2225 self .model = model
26+ self .debug = debug
27+ self .logger = logging .getLogger (__name__ )
2328
2429 # Set up base URLs for services
2530 self .base_urls = {
@@ -28,8 +33,13 @@ def __init__(self, service_type: str, model: Optional[str] = None):
2833 }
2934
3035 if service_type not in self .base_urls :
36+ self .logger .error (f"Unsupported service type: { service_type } " )
3137 raise ValueError (f"Unsupported service type: { service_type } " )
3238
39+ self .logger .debug (
40+ f"Initialized AIService with { service_type } and model { model } "
41+ )
42+
3343 def query (self , prompt : str ) -> str :
3444 """Query the AI service with the given prompt.
3545
@@ -47,6 +57,7 @@ def query(self, prompt: str) -> str:
4757 elif self .service_type == "jan" :
4858 return self ._query_jan (prompt )
4959 else :
60+ self .logger .error (f"Unsupported service type: { self .service_type } " )
5061 raise ValueError (f"Unsupported service type: { self .service_type } " )
5162
5263 def _query_ollama (self , prompt : str ) -> str :
@@ -61,11 +72,31 @@ def _query_ollama(self, prompt: str) -> str:
6172 url = self .base_urls ["ollama" ]
6273 data = {"model" : self .model , "prompt" : prompt , "stream" : False }
6374
75+ self .logger .debug (f"Sending request to Ollama API at { url } " )
76+ if self .debug :
77+ self .logger .debug (f"Request data: { data } " )
78+
6479 try :
80+ self .logger .debug ("Making POST request to Ollama API" )
6581 response = requests .post (url , json = data )
82+ self .logger .debug (
83+ f"Received response with status code: { response .status_code } "
84+ )
85+
86+ if self .debug :
87+ self .logger .debug (f"Response headers: { response .headers } " )
88+
6689 response .raise_for_status ()
67- return response .json ().get ("response" , "" )
90+ result = response .json ()
91+
92+ if not result .get ("response" ):
93+ self .logger .error (f"Unexpected response format from Ollama: { result } " )
94+ if self .debug :
95+ self .logger .debug (f"Full response: { result } " )
96+
97+ return result .get ("response" , "" )
6898 except Exception as e :
99+ self .logger .error (f"Error querying Ollama API: { e } " )
69100 raise Exception (f"Error querying Ollama API: { e } " )
70101
71102 def _query_jan (self , prompt : str ) -> str :
@@ -88,9 +119,31 @@ def _query_jan(self, prompt: str) -> str:
88119 "temperature" : 0.7 ,
89120 }
90121
122+ self .logger .debug (f"Sending request to Jan AI API at { url } " )
123+ if self .debug :
124+ self .logger .debug (f"Request data: { data } " )
125+
91126 try :
127+ self .logger .debug ("Making POST request to Jan AI API" )
92128 response = requests .post (url , headers = headers , json = data )
129+ self .logger .debug (
130+ f"Received response with status code: { response .status_code } "
131+ )
132+
133+ if self .debug :
134+ self .logger .debug (f"Response headers: { response .headers } " )
135+
93136 response .raise_for_status ()
94- return response .json ()["choices" ][0 ]["message" ]["content" ]
137+ result = response .json ()
138+
139+ if not result .get ("choices" ) or not result ["choices" ][0 ].get ("message" ):
140+ self .logger .error (f"Unexpected response format from Jan AI: { result } " )
141+ if self .debug :
142+ self .logger .debug (f"Full response: { result } " )
143+ return ""
144+
145+ content = result ["choices" ][0 ]["message" ]["content" ]
146+ return content
95147 except Exception as e :
148+ self .logger .error (f"Error querying Jan AI API: { e } " )
96149 raise Exception (f"Error querying Jan AI API: { e } " )
0 commit comments