jzou19950715 commited on
Commit
9f9ed4e
·
verified ·
1 Parent(s): 8a34f80

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -1,14 +1,16 @@
 
1
  import json
2
  import logging
3
  from datetime import datetime
4
  from typing import Dict, List, Optional, Any
5
  import gradio as gr
6
- from openai import OpenAI # Updated import
7
 
8
  # Configure logging
9
  logging.basicConfig(level=logging.INFO)
10
  logger = logging.getLogger(__name__)
11
 
 
12
  # System prompts
13
  CONVERSATION_PROMPT = """You are LOSS DOG, a professional profile builder. Your goal is to have natural conversations
14
  with users to gather information about their professional background across 9 categories:
@@ -49,10 +51,10 @@ class ProfileBuilder:
49
  self.client = None
50
 
51
  def _initialize_client(self, api_key: str) -> None:
52
- """Initialize OpenAI client with API key."""
53
  if not api_key.startswith("sk-"):
54
  raise ValueError("Invalid API key format")
55
- self.client = OpenAI(api_key=api_key)
56
 
57
  async def process_message(self, message: str, api_key: str) -> Dict[str, Any]:
58
  """Process a user message through conversation phase."""
@@ -63,8 +65,8 @@ class ProfileBuilder:
63
  # Add message to history
64
  self.conversation_history.append({"role": "user", "content": message})
65
 
66
- # Get AI response using new client format
67
- response = await self.client.chat.completions.create(
68
  model="gpt-4o-mini",
69
  messages=[
70
  {"role": "system", "content": CONVERSATION_PROMPT},
@@ -73,7 +75,7 @@ class ProfileBuilder:
73
  temperature=0.7
74
  )
75
 
76
- ai_message = response.choices[0].message.content
77
  self.conversation_history.append({"role": "assistant", "content": ai_message})
78
 
79
  return {"response": ai_message}
@@ -94,8 +96,8 @@ class ProfileBuilder:
94
  for msg in self.conversation_history
95
  )
96
 
97
- # Extract structured information using new client format
98
- response = await self.client.chat.completions.create(
99
  model="gpt-4o-mini",
100
  messages=[
101
  {"role": "system", "content": EXTRACTION_PROMPT},
@@ -105,7 +107,7 @@ class ProfileBuilder:
105
  )
106
 
107
  # Parse the structured response
108
- profile_data = json.loads(response.choices[0].message.content)
109
 
110
  # Add metadata
111
  profile = {
@@ -201,4 +203,8 @@ def create_gradio_interface():
201
 
202
  if __name__ == "__main__":
203
  demo = create_gradio_interface()
204
- demo.launch(server_name="0.0.0.0", server_port=7860)
 
 
 
 
 
1
+
2
  import json
3
  import logging
4
  from datetime import datetime
5
  from typing import Dict, List, Optional, Any
6
  import gradio as gr
7
+ from openai import AsyncOpenAI # Changed to AsyncOpenAI
8
 
9
  # Configure logging
10
  logging.basicConfig(level=logging.INFO)
11
  logger = logging.getLogger(__name__)
12
 
13
+ # System prompts remain the same as before
14
  # System prompts
15
  CONVERSATION_PROMPT = """You are LOSS DOG, a professional profile builder. Your goal is to have natural conversations
16
  with users to gather information about their professional background across 9 categories:
 
51
  self.client = None
52
 
53
  def _initialize_client(self, api_key: str) -> None:
54
+ """Initialize AsyncOpenAI client with API key."""
55
  if not api_key.startswith("sk-"):
56
  raise ValueError("Invalid API key format")
57
+ self.client = AsyncOpenAI(api_key=api_key)
58
 
59
  async def process_message(self, message: str, api_key: str) -> Dict[str, Any]:
60
  """Process a user message through conversation phase."""
 
65
  # Add message to history
66
  self.conversation_history.append({"role": "user", "content": message})
67
 
68
+ # Get AI response - properly awaited
69
+ completion = await self.client.chat.completions.create(
70
  model="gpt-4o-mini",
71
  messages=[
72
  {"role": "system", "content": CONVERSATION_PROMPT},
 
75
  temperature=0.7
76
  )
77
 
78
+ ai_message = completion.choices[0].message.content
79
  self.conversation_history.append({"role": "assistant", "content": ai_message})
80
 
81
  return {"response": ai_message}
 
96
  for msg in self.conversation_history
97
  )
98
 
99
+ # Extract structured information - properly awaited
100
+ completion = await self.client.chat.completions.create(
101
  model="gpt-4o-mini",
102
  messages=[
103
  {"role": "system", "content": EXTRACTION_PROMPT},
 
107
  )
108
 
109
  # Parse the structured response
110
+ profile_data = json.loads(completion.choices[0].message.content)
111
 
112
  # Add metadata
113
  profile = {
 
203
 
204
  if __name__ == "__main__":
205
  demo = create_gradio_interface()
206
+ demo.queue() # Add queue for async support
207
+ demo.launch(
208
+ server_name="0.0.0.0",
209
+ server_port=7860
210
+ )