Soumik555 commited on
Commit
b707dc6
·
1 Parent(s): f4bdac1

added together ai agent

Browse files
Files changed (1) hide show
  1. python_code_executor_service.py +31 -4
python_code_executor_service.py CHANGED
@@ -3,27 +3,37 @@ import matplotlib.pyplot as plt
3
  from pathlib import Path
4
  from typing import Dict, Any, List, Optional
5
  import pandas as pd
 
6
  import json
7
  import io
8
  import contextlib
9
  import traceback
 
 
 
 
 
10
  from pydantic import BaseModel
11
 
 
12
  class CodeResponse(BaseModel):
13
  """Container for code-related responses"""
14
  language: str = "python"
15
  code: str
16
 
 
17
  class ChartSpecification(BaseModel):
18
  """Details about requested charts"""
19
  image_description: str
20
  code: Optional[str] = None
21
 
 
22
  class AnalysisOperation(BaseModel):
23
  """Container for a single analysis operation with its code and result"""
24
  code: CodeResponse
25
  description: str
26
 
 
27
  class CsvChatResult(BaseModel):
28
  """Structured response for CSV-related AI interactions"""
29
  response_type: str # Literal["casual", "data_analysis", "visualization", "mixed"]
@@ -31,8 +41,9 @@ class CsvChatResult(BaseModel):
31
  analysis_operations: List[AnalysisOperation]
32
  charts: Optional[List[ChartSpecification]] = None
33
 
 
34
  class PythonExecutor:
35
- """Handles execution of Python code and dummy image generation for CSV analysis"""
36
 
37
  def __init__(self, df: pd.DataFrame, charts_folder: str = "generated_charts"):
38
  """
@@ -48,7 +59,7 @@ class PythonExecutor:
48
 
49
  def execute_code(self, code: str) -> Dict[str, Any]:
50
  """
51
- Execute Python code and return the output and any generated plots
52
 
53
  Args:
54
  code (str): Python code to execute
@@ -78,12 +89,28 @@ class PythonExecutor:
78
  plt.close('all')
79
 
80
  try:
81
- # Create execution context with common libraries and the DataFrame
82
  exec_globals = {
 
83
  'pd': pd,
 
 
 
 
84
  'plt': plt,
 
 
 
 
 
 
 
 
 
 
 
 
85
  'json': json,
86
- 'df': self.df, # Include the DataFrame in the execution context
87
  '__builtins__': __builtins__,
88
  }
89
 
 
3
  from pathlib import Path
4
  from typing import Dict, Any, List, Optional
5
  import pandas as pd
6
+ import numpy as np
7
  import json
8
  import io
9
  import contextlib
10
  import traceback
11
+ import time
12
+ from datetime import datetime, timedelta
13
+ import seaborn as sns
14
+ import statsmodels.api as sm
15
+ import scipy.stats as stats
16
  from pydantic import BaseModel
17
 
18
+
19
  class CodeResponse(BaseModel):
20
  """Container for code-related responses"""
21
  language: str = "python"
22
  code: str
23
 
24
+
25
  class ChartSpecification(BaseModel):
26
  """Details about requested charts"""
27
  image_description: str
28
  code: Optional[str] = None
29
 
30
+
31
  class AnalysisOperation(BaseModel):
32
  """Container for a single analysis operation with its code and result"""
33
  code: CodeResponse
34
  description: str
35
 
36
+
37
  class CsvChatResult(BaseModel):
38
  """Structured response for CSV-related AI interactions"""
39
  response_type: str # Literal["casual", "data_analysis", "visualization", "mixed"]
 
41
  analysis_operations: List[AnalysisOperation]
42
  charts: Optional[List[ChartSpecification]] = None
43
 
44
+
45
  class PythonExecutor:
46
+ """Handles execution of Python code with comprehensive data analysis libraries"""
47
 
48
  def __init__(self, df: pd.DataFrame, charts_folder: str = "generated_charts"):
49
  """
 
59
 
60
  def execute_code(self, code: str) -> Dict[str, Any]:
61
  """
62
+ Execute Python code with full data analysis context and return results
63
 
64
  Args:
65
  code (str): Python code to execute
 
89
  plt.close('all')
90
 
91
  try:
92
+ # Create comprehensive execution context with data analysis libraries
93
  exec_globals = {
94
+ # Core data analysis
95
  'pd': pd,
96
+ 'np': np,
97
+ 'df': self.df,
98
+
99
+ # Visualization
100
  'plt': plt,
101
+ 'sns': sns,
102
+
103
+ # Statistics
104
+ 'sm': sm,
105
+ 'stats': stats,
106
+
107
+ # Date/time
108
+ 'datetime': datetime,
109
+ 'timedelta': timedelta,
110
+ 'time': time,
111
+
112
+ # Utilities
113
  'json': json,
 
114
  '__builtins__': __builtins__,
115
  }
116