Skip to content

Commit d41f85f

Browse files
committed
added open ai provider
1 parent 7e18985 commit d41f85f

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
import os
3+
from openai import OpenAI
4+
from typing import Sequence, Any
5+
6+
from .ai_service import AIProvider, Character, Message
7+
8+
9+
class OpenAIProvider:
10+
def __init__(self, api_key: str, model_name: str = 'gpt-4.5-turbo'):
11+
self.client = OpenAI(api_key=api_key)
12+
self.model_name = model_name
13+
14+
def _format_history_for_openai(self, character: Character, history: Sequence[Message]) -> list[dict[str, str]]:
15+
openai_history = []
16+
if character.system_prompt:
17+
openai_history.append({"role": "system", "content": character.system_prompt})
18+
19+
for message in history:
20+
role = 'user' if message.sender == 'user' else 'assistant'
21+
openai_history.append({"role": role, "content": message.content})
22+
23+
return openai_history
24+
25+
def get_completion(self, character: Character, history: Sequence[Message]) -> str:
26+
if not history:
27+
return "Error: No conversation history provided."
28+
messages = self._format_history_for_openai(character, history)
29+
30+
try:
31+
response = self.client.chat.completions.create(
32+
model=self.model_name,
33+
messages=messages
34+
)
35+
ai_response_text = response.choices[0].message.content
36+
37+
if not ai_response_text:
38+
print("Warning: OpenAI API returned no text.")
39+
return "I cannot generate a response for that request."
40+
41+
42+
return ai_response_text
43+
44+
except Exception as e:
45+
print(f"Error calling OpenAI API: {e}")
46+
return "Sorry, I encountered an erro."

0 commit comments

Comments
 (0)