6
6
# "python-dotenv",
7
7
# ]
8
8
# ///
9
+ from openai .types .responses .response_input_param import ResponseInputParam
10
+ from openai ._client import OpenAI
9
11
import os
10
12
import ast
11
13
import argparse
12
14
from pathlib import Path
13
15
import pandas as pd
14
- from typing import Self
15
- from openai .types .responses .response_input_param import Message
16
+ from openai .types .responses .easy_input_message_param import EasyInputMessageParam
16
17
17
18
from tenantfirstaid .chat import DEFAULT_INSTRUCTIONS , ChatManager
18
19
36
37
37
38
38
39
class ChatView :
39
- client : Self
40
+ client : OpenAI
40
41
41
42
def __init__ (self , starting_message , user_facts , city , state ):
42
43
self .chat_manager = ChatManager ()
43
44
self .client = self .chat_manager .get_client ()
44
45
self .city = city
45
46
self .state = state
46
47
47
- self .input_messages : list [ Message ] = [
48
- Message (role = "user" , content = starting_message )
48
+ self .input_messages : ResponseInputParam = [
49
+ EasyInputMessageParam (role = "user" , content = starting_message )
49
50
]
50
51
self .starting_message = starting_message # Store the starting message
51
52
@@ -62,11 +63,11 @@ def _reverse_message_roles(self, messages):
62
63
for message in messages :
63
64
if message ["role" ] == "user" :
64
65
reversed_messages .append (
65
- Message (role = "assistant " , content = message ["content" ])
66
+ EasyInputMessageParam (role = "system " , content = message ["content" ])
66
67
)
67
68
elif message ["role" ] == "assistant" :
68
69
reversed_messages .append (
69
- Message (role = "user" , content = message ["content" ])
70
+ EasyInputMessageParam (role = "user" , content = message ["content" ])
70
71
)
71
72
else :
72
73
reversed_messages .append (message )
@@ -85,7 +86,9 @@ def bot_response(self):
85
86
stream = False ,
86
87
)
87
88
self .input_messages .append (
88
- Message (role = "assistant" , content = response .output_text )
89
+ EasyInputMessageParam (
90
+ role = "assistant" , content = response .output_text
91
+ )
89
92
)
90
93
self .input_messages = self ._reverse_message_roles (self .input_messages )
91
94
return response .output_text
@@ -94,7 +97,9 @@ def bot_response(self):
94
97
tries += 1
95
98
# If all attempts fail, return a failure message
96
99
failure_message = "I'm sorry, I am unable to generate a response at this time. Please try again later."
97
- self .input_messages .append (Message (role = "assistant" , content = failure_message ))
100
+ self .input_messages .append (
101
+ EasyInputMessageParam (role = "assistant" , content = failure_message )
102
+ )
98
103
return failure_message
99
104
100
105
def user_response (self ):
@@ -110,15 +115,17 @@ def user_response(self):
110
115
stream = False ,
111
116
)
112
117
self .input_messages .append (
113
- Message (role = "user" , content = response .output_text )
118
+ EasyInputMessageParam (role = "user" , content = response .output_text )
114
119
)
115
120
return response .output_text
116
121
except Exception as e :
117
122
print (f"Error generating user response: { e } " )
118
123
tries += 1
119
124
# If all attempts fail, return a failure message
120
125
failure_message = "I'm sorry, I am unable to generate a user response at this time. Please try again later."
121
- self .input_messages .append (Message (role = "user" , content = failure_message ))
126
+ self .input_messages .append (
127
+ EasyInputMessageParam (role = "user" , content = failure_message )
128
+ )
122
129
return failure_message
123
130
124
131
def generate_conversation (self , num_turns = 5 ):
@@ -134,8 +141,8 @@ def generate_conversation(self, num_turns=5):
134
141
user_response = self .user_response ()
135
142
chat_history += f"USER: { user_response } \n "
136
143
print (f"USER: { user_response } " )
137
- self .input_messages = self . input_messages [
138
- 0
144
+ self .input_messages = [
145
+ self . input_messages [ 0 ]
139
146
] # Reset input messages to the first message only
140
147
return chat_history
141
148
0 commit comments