Upload 20 files
Browse files- MyBot.cs +126 -0
- ai_core.py +171 -0
- app.py +299 -84
- botclass.cs +126 -0
- botutilitys.cs +232 -0
- botutilitys.txt +107 -0
- changelog.md +18 -0
- codette_reasoning.py +179 -0
- cognition_cocooner.py +71 -0
- dream_reweaver_2.py +53 -0
- init.db.py +14 -0
- instructions.txt +133 -0
- lots.txt +316 -0
- main.py +13 -0
- new_2.txt +56 -0
- new_3.txt +44 -0
- new_4.txt +19 -0
- new_5.txt +38 -0
- quantum_spiderweb.py +73 -0
- universal_reasoning_clean.py +2 -0
MyBot.cs
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System;
|
2 |
+
using System.Collections.Generic;
|
3 |
+
using System.Net.Http;
|
4 |
+
using System.Threading.Tasks;
|
5 |
+
using Microsoft.Extensions.Logging;
|
6 |
+
|
7 |
+
public class MyBot
|
8 |
+
{
|
9 |
+
private readonly HttpClient _httpClient;
|
10 |
+
private readonly ILogger<MyBot> _logger;
|
11 |
+
private readonly Dictionary<string, List<Dictionary<string, object>>> _context;
|
12 |
+
private readonly SentimentAnalysis _sentimentAnalysis;
|
13 |
+
|
14 |
+
public MyBot(ILogger<MyBot> logger, IHttpClientFactory httpClientFactory, SentimentAnalysis sentimentAnalysis)
|
15 |
+
{
|
16 |
+
_httpClient = httpClientFactory.CreateClient();
|
17 |
+
_logger = logger;
|
18 |
+
_context = new Dictionary<string, List<Dictionary<string, object>>>();
|
19 |
+
_sentimentAnalysis = sentimentAnalysis;
|
20 |
+
}
|
21 |
+
|
22 |
+
public async Task<string> GenerateResponse(string text, string userId)
|
23 |
+
{
|
24 |
+
try
|
25 |
+
{
|
26 |
+
_logger.LogInformation($"Generating response for user_id: {userId} with text: {text}");
|
27 |
+
|
28 |
+
var messages = new List<Dictionary<string, string>>
|
29 |
+
{
|
30 |
+
new Dictionary<string, string> { { "role", "system" }, { "content", "You are a helpful assistant." } },
|
31 |
+
new Dictionary<string, string> { { "role", "user" }, { "content", text } }
|
32 |
+
};
|
33 |
+
|
34 |
+
var response = await AzureChatCompletionRequest(messages);
|
35 |
+
_logger.LogInformation($"Azure OpenAI response: {response}");
|
36 |
+
return response;
|
37 |
+
}
|
38 |
+
catch (HttpRequestException e)
|
39 |
+
{
|
40 |
+
_logger.LogError($"Error generating response: {e}");
|
41 |
+
return "Sorry, I couldn't generate a response at this time.";
|
42 |
+
}
|
43 |
+
catch (Exception e)
|
44 |
+
{
|
45 |
+
_logger.LogError($"Unexpected error: {e}");
|
46 |
+
return "An unexpected error occurred. Please try again later.";
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
private async Task<string> AzureChatCompletionRequest(List<Dictionary<string, string>> messages)
|
51 |
+
{
|
52 |
+
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
|
53 |
+
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
|
54 |
+
|
55 |
+
var payload = new
|
56 |
+
{
|
57 |
+
model = "gpt-4",
|
58 |
+
messages = messages
|
59 |
+
};
|
60 |
+
|
61 |
+
var requestContent = new StringContent(System.Text.Json.JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
|
62 |
+
_httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
|
63 |
+
|
64 |
+
var response = await _httpClient.PostAsync(endpoint, requestContent);
|
65 |
+
response.EnsureSuccessStatusCode();
|
66 |
+
|
67 |
+
var responseContent = await response.Content.ReadAsStringAsync();
|
68 |
+
var responseObject = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(responseContent);
|
69 |
+
var choices = responseObject["choices"] as List<Dictionary<string, object>>;
|
70 |
+
var message = choices[0]["message"] as Dictionary<string, string>;
|
71 |
+
|
72 |
+
return message["content"];
|
73 |
+
}
|
74 |
+
|
75 |
+
public void EnhanceContextAwareness(string userId, string text)
|
76 |
+
{
|
77 |
+
var sentiment = _sentimentAnalysis.Predict(text);
|
78 |
+
if (!_context.ContainsKey(userId))
|
79 |
+
{
|
80 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
81 |
+
}
|
82 |
+
_context[userId].Add(new Dictionary<string, object> { { "text", text }, { "sentiment", sentiment } });
|
83 |
+
}
|
84 |
+
|
85 |
+
public void ProactiveLearning(string userId, string feedback)
|
86 |
+
{
|
87 |
+
if (!_context.ContainsKey(userId))
|
88 |
+
{
|
89 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
90 |
+
}
|
91 |
+
_context[userId].Add(new Dictionary<string, object> { { "feedback", feedback } });
|
92 |
+
}
|
93 |
+
|
94 |
+
public void EthicalDecisionMaking(string userId, string decision)
|
95 |
+
{
|
96 |
+
var ethicalDecision = $"Considering ethical principles, the decision is: {decision}";
|
97 |
+
if (!_context.ContainsKey(userId))
|
98 |
+
{
|
99 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
100 |
+
}
|
101 |
+
_context[userId].Add(new Dictionary<string, object> { { "ethical_decision", ethicalDecision } });
|
102 |
+
}
|
103 |
+
|
104 |
+
public string EmotionalIntelligence(string userId, string text)
|
105 |
+
{
|
106 |
+
var sentiment = _sentimentAnalysis.Predict(text);
|
107 |
+
var response = $"I sense that you are feeling {sentiment.Probability}. How can I assist you further?";
|
108 |
+
if (!_context.ContainsKey(userId))
|
109 |
+
{
|
110 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
111 |
+
}
|
112 |
+
_context[userId].Add(new Dictionary<string, object> { { "emotional_response", response } });
|
113 |
+
return response;
|
114 |
+
}
|
115 |
+
|
116 |
+
public string TransparencyAndExplainability(string userId, string decision)
|
117 |
+
{
|
118 |
+
var explanation = $"The decision was made based on the following context: {_context[userId]}";
|
119 |
+
if (!_context.ContainsKey(userId))
|
120 |
+
{
|
121 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
122 |
+
}
|
123 |
+
_context[userId].Add(new Dictionary<string, object> { { "explanation", explanation } });
|
124 |
+
return explanation;
|
125 |
+
}
|
126 |
+
}
|
ai_core.py
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import aiohttp
|
2 |
+
import json
|
3 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
4 |
+
from typing import List, Dict, Any
|
5 |
+
|
6 |
+
from components.adaptive_learning import AdaptiveLearningEnvironment
|
7 |
+
from components.ai_driven_creativity import AIDrivenCreativity
|
8 |
+
from components.collaborative_ai import CollaborativeAI
|
9 |
+
from components.cultural_sensitivity import CulturalSensitivityEngine
|
10 |
+
from components.data_processing import AdvancedDataProcessor
|
11 |
+
from components.dynamic_learning import DynamicLearner
|
12 |
+
from components.ethical_governance import EthicalAIGovernance
|
13 |
+
from components.explainable_ai import ExplainableAI
|
14 |
+
from components.feedback_manager import ImprovedFeedbackManager
|
15 |
+
from components.multimodal_analyzer import MultimodalAnalyzer
|
16 |
+
from components.neuro_symbolic import NeuroSymbolicEngine
|
17 |
+
from components.quantum_optimizer import QuantumInspiredOptimizer
|
18 |
+
from components.real_time_data import RealTimeDataIntegrator
|
19 |
+
from components.sentiment_analysis import EnhancedSentimentAnalyzer
|
20 |
+
from components.self_improving_ai import SelfImprovingAI
|
21 |
+
from components.user_personalization import UserPersonalizer
|
22 |
+
from models.cognitive_engine import BroaderPerspectiveEngine
|
23 |
+
from models.elements import Element
|
24 |
+
from models.healing_system import SelfHealingSystem
|
25 |
+
from models.safety_system import SafetySystem
|
26 |
+
from models.user_profiles import UserProfile
|
27 |
+
from utils.database import Database
|
28 |
+
from utils.logger import logger
|
29 |
+
|
30 |
+
class AICore:
|
31 |
+
"""Improved core system with cutting-edge capabilities"""
|
32 |
+
def __init__(self, config_path: str = "config.json"):
|
33 |
+
self.config = self._load_config(config_path)
|
34 |
+
self.models = self._initialize_models()
|
35 |
+
self.cognition = BroaderPerspectiveEngine()
|
36 |
+
self.self_healing = SelfHealingSystem(self.config)
|
37 |
+
self.safety_system = SafetySystem()
|
38 |
+
self.emotional_analyzer = EnhancedSentimentAnalyzer()
|
39 |
+
self.elements = self._initialize_elements()
|
40 |
+
self.security_level = 0
|
41 |
+
self.http_session = aiohttp.ClientSession()
|
42 |
+
self.database = Database() # Initialize database
|
43 |
+
self.user_profiles = UserProfile(self.database) # Initialize user profiles
|
44 |
+
self.feedback_manager = ImprovedFeedbackManager(self.database) # Initialize feedback manager
|
45 |
+
self.context_manager = AdaptiveLearningEnvironment() # Initialize adaptive learning environment
|
46 |
+
self.data_fetcher = RealTimeDataIntegrator() # Initialize real-time data fetcher
|
47 |
+
self.sentiment_analyzer = EnhancedSentimentAnalyzer() # Initialize sentiment analyzer
|
48 |
+
self.data_processor = AdvancedDataProcessor() # Initialize advanced data processor
|
49 |
+
self.dynamic_learner = DynamicLearner() # Initialize dynamic learner
|
50 |
+
self.multimodal_analyzer = MultimodalAnalyzer() # Initialize multimodal analyzer
|
51 |
+
self.ethical_decision_maker = EthicalAIGovernance() # Initialize ethical decision maker
|
52 |
+
self.user_personalizer = UserPersonalizer(self.database) # Initialize user personalizer
|
53 |
+
self.ai_integrator = CollaborativeAI() # Initialize AI integrator
|
54 |
+
self.neuro_symbolic_engine = NeuroSymbolicEngine() # Initialize neuro-symbolic engine
|
55 |
+
self.explainable_ai = ExplainableAI() # Initialize explainable AI
|
56 |
+
self.quantum_inspired_optimizer = QuantumInspiredOptimizer() # Initialize quantum-inspired optimizer
|
57 |
+
self.cultural_sensitivity_engine = CulturalSensitivityEngine() # Initialize cultural sensitivity engine
|
58 |
+
self.self_improving_ai = SelfImprovingAI() # Initialize self-improving AI
|
59 |
+
self.ai_driven_creativity = AIDrivenCreativity() # Initialize AI-driven creativity
|
60 |
+
self._validate_perspectives()
|
61 |
+
|
62 |
+
def _load_config(self, config_path: str) -> dict:
|
63 |
+
"""Load configuration from a file"""
|
64 |
+
with open(config_path, 'r') as file:
|
65 |
+
return json.load(file)
|
66 |
+
|
67 |
+
def _initialize_models(self):
|
68 |
+
"""Initialize models required by the AICore class"""
|
69 |
+
models = {
|
70 |
+
"mistralai": AutoModelForCausalLM.from_pretrained(self.config["model_name"]),
|
71 |
+
"tokenizer": AutoTokenizer.from_pretrained(self.config["model_name"])
|
72 |
+
}
|
73 |
+
return models
|
74 |
+
|
75 |
+
def _initialize_elements(self):
|
76 |
+
"""Initialize elements with their defense abilities"""
|
77 |
+
elements = {
|
78 |
+
"hydrogen": Element("Hydrogen", "H", "Python", ["Lightweight", "Reactive"], ["Combustion"], "evasion"),
|
79 |
+
"carbon": Element("Carbon", "C", "Java", ["Versatile", "Strong"], ["Bonding"], "adaptability"),
|
80 |
+
"iron": Element("Iron", "Fe", "C++", ["Durable", "Magnetic"], ["Rusting"], "fortification"),
|
81 |
+
"silicon": Element("Silicon", "Si", "JavaScript", ["Semiconductor", "Abundant"], ["Doping"], "barrier"),
|
82 |
+
"oxygen": Element("Oxygen", "O", "Rust", ["Oxidizing", "Life-supporting"], ["Combustion"], "regeneration")
|
83 |
+
}
|
84 |
+
return elements
|
85 |
+
|
86 |
+
def _validate_perspectives(self):
|
87 |
+
"""Ensure configured perspectives are valid"""
|
88 |
+
valid = self.cognition.available_perspectives
|
89 |
+
invalid = [p for p in self.config["perspectives"] if p not in valid]
|
90 |
+
if invalid:
|
91 |
+
logger.warning(f"Removing invalid perspectives: {invalid}")
|
92 |
+
self.config["perspectives"] = [p for p in self.config["perspectives"] if p in valid]
|
93 |
+
|
94 |
+
async def _process_perspectives(self, query: str) -> List[str]:
|
95 |
+
"""Safely process perspectives using validated methods"""
|
96 |
+
perspectives = []
|
97 |
+
for p in self.config["perspectives"]:
|
98 |
+
try:
|
99 |
+
method = self.cognition.get_perspective_method(p)
|
100 |
+
perspectives.append(method(query))
|
101 |
+
except Exception as e:
|
102 |
+
logger.error(f"Perspective processing failed: {e}")
|
103 |
+
return perspectives
|
104 |
+
|
105 |
+
async def generate_response(self, query: str, user_id: int) -> Dict[str, Any]:
|
106 |
+
"""Generate response with advanced capabilities"""
|
107 |
+
try:
|
108 |
+
# Initialize temporary modifiers/filters for this query
|
109 |
+
response_modifiers = []
|
110 |
+
response_filters = []
|
111 |
+
|
112 |
+
# Execute element defenses
|
113 |
+
for element in self.elements.values():
|
114 |
+
element.execute_defense_function(self, response_modifiers, response_filters)
|
115 |
+
|
116 |
+
# Process perspectives and generate response
|
117 |
+
perspectives = await self._process_perspectives(query)
|
118 |
+
model_response = await self._generate_local_model_response(query)
|
119 |
+
|
120 |
+
# Apply sentiment analysis
|
121 |
+
sentiment = self.sentiment_analyzer.detailed_analysis(query)
|
122 |
+
|
123 |
+
# Apply modifiers and filters
|
124 |
+
final_response = model_response
|
125 |
+
for modifier in response_modifiers:
|
126 |
+
final_response = modifier(final_response)
|
127 |
+
for filter_func in response_filters:
|
128 |
+
final_response = filter_func(final_response)
|
129 |
+
|
130 |
+
# Adjust response based on feedback
|
131 |
+
feedback = self.database.get_latest_feedback(user_id)
|
132 |
+
if feedback:
|
133 |
+
final_response = self.feedback_manager.adjust_response_based_on_feedback(final_response, feedback)
|
134 |
+
|
135 |
+
# Log user interaction for analytics
|
136 |
+
self.database.log_interaction(user_id, query, final_response)
|
137 |
+
|
138 |
+
# Update context
|
139 |
+
self.context_manager.update_environment(user_id, {"query": query, "response": final_response})
|
140 |
+
|
141 |
+
# Personalize response
|
142 |
+
final_response = self.user_personalizer.personalize_response(final_response, user_id)
|
143 |
+
|
144 |
+
# Apply ethical decision-making framework
|
145 |
+
final_response = self.ethical_decision_maker.enforce_policies(final_response)
|
146 |
+
|
147 |
+
# Explain the decision
|
148 |
+
explanation = self.explainable_ai.explain_decision(final_response, query)
|
149 |
+
|
150 |
+
return {
|
151 |
+
"insights": perspectives,
|
152 |
+
"response": final_response,
|
153 |
+
"sentiment": sentiment,
|
154 |
+
"security_level": self.security_level,
|
155 |
+
"health_status": await self.self_healing.check_health(),
|
156 |
+
"explanation": explanation
|
157 |
+
}
|
158 |
+
except Exception as e:
|
159 |
+
logger.error(f"Response generation failed: {e}")
|
160 |
+
return {"error": "Processing failed - safety protocols engaged"}
|
161 |
+
|
162 |
+
async def _generate_local_model_response(self, query: str) -> str:
|
163 |
+
"""Generate a response from the local model"""
|
164 |
+
inputs = self.models['tokenizer'](query, return_tensors="pt")
|
165 |
+
outputs = self.models['mistralai'].generate(**inputs)
|
166 |
+
return self.models['tokenizer'].decode(outputs[0], skip_special_tokens=True)
|
167 |
+
|
168 |
+
async def shutdown(self):
|
169 |
+
"""Proper async resource cleanup"""
|
170 |
+
await self.http_session.close()
|
171 |
+
await self.database.close() # Close the database connection
|
app.py
CHANGED
@@ -1,84 +1,299 @@
|
|
1 |
-
import
|
2 |
-
import
|
3 |
-
import
|
4 |
-
import
|
5 |
-
import
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import json
|
3 |
+
import asyncio
|
4 |
+
import logging
|
5 |
+
import psutil
|
6 |
+
import random
|
7 |
+
import re
|
8 |
+
import sqlite3
|
9 |
+
from typing import Dict, List, Optional, Any
|
10 |
+
from cryptography.fernet import Fernet
|
11 |
+
import tkinter as tk
|
12 |
+
from tkinter import scrolledtext, messagebox
|
13 |
+
from threading import Thread, Lock
|
14 |
+
import numpy as np
|
15 |
+
from collections import deque
|
16 |
+
from sklearn.ensemble import IsolationForest
|
17 |
+
import time
|
18 |
+
from werkzeug.security import generate_password_hash, check_password_hash
|
19 |
+
from openai import AsyncOpenAI
|
20 |
+
|
21 |
+
# Initialize async OpenAI client
|
22 |
+
try:
|
23 |
+
aclient = AsyncOpenAI(api_key=os.getenv("OPENAI_API_KEY"))
|
24 |
+
except Exception as e:
|
25 |
+
logger.error(f"Failed to initialize OpenAI client: {e}")
|
26 |
+
aclient = None
|
27 |
+
|
28 |
+
# Configure logging
|
29 |
+
logging.basicConfig(level=logging.INFO,
|
30 |
+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
31 |
+
logger = logging.getLogger(__name__)
|
32 |
+
|
33 |
+
class EnhancedAIConfig:
|
34 |
+
"""Advanced configuration manager with encryption and validation"""
|
35 |
+
_DEFAULTS = {
|
36 |
+
"model": "gpt-4-turbo",
|
37 |
+
"safety_thresholds": {
|
38 |
+
"memory": 85,
|
39 |
+
"cpu": 90,
|
40 |
+
"response_time": 2.0
|
41 |
+
},
|
42 |
+
"defense_strategies": ["evasion", "adaptability", "barrier"],
|
43 |
+
"cognitive_modes": ["scientific", "creative", "emotional"]
|
44 |
+
}
|
45 |
+
|
46 |
+
def __init__(self, config_path: str = "ai_config.json"):
|
47 |
+
self.config = self._load_config(config_path)
|
48 |
+
self._validate()
|
49 |
+
self.encryption = self._init_encryption()
|
50 |
+
|
51 |
+
def _load_config(self, path: str) -> Dict:
|
52 |
+
try:
|
53 |
+
with open(path, 'r') as f:
|
54 |
+
return self._merge_configs(json.load(f))
|
55 |
+
except (FileNotFoundError, json.JSONDecodeError):
|
56 |
+
return self._DEFAULTS
|
57 |
+
|
58 |
+
def _merge_configs(self, user_config: Dict) -> Dict:
|
59 |
+
merged = self._DEFAULTS.copy()
|
60 |
+
for key in user_config:
|
61 |
+
if isinstance(user_config[key], dict):
|
62 |
+
merged[key].update(user_config[key])
|
63 |
+
else:
|
64 |
+
merged[key] = user_config[key]
|
65 |
+
return merged
|
66 |
+
|
67 |
+
def _validate(self):
|
68 |
+
if not all(isinstance(mode, str) for mode in self.config["cognitive_modes"]):
|
69 |
+
raise ValueError("Invalid cognitive mode configuration")
|
70 |
+
|
71 |
+
class SecureDatabase:
|
72 |
+
"""Thread-safe SQLite database manager"""
|
73 |
+
def __init__(self, db_path: str = "ai_system.db"):
|
74 |
+
self.db_path = db_path
|
75 |
+
self.lock = Lock()
|
76 |
+
self._init_db()
|
77 |
+
|
78 |
+
def _init_db(self):
|
79 |
+
with self.lock, sqlite3.connect(self.db_path) as conn:
|
80 |
+
conn.execute("""
|
81 |
+
CREATE TABLE IF NOT EXISTS users (
|
82 |
+
id INTEGER PRIMARY KEY,
|
83 |
+
username TEXT UNIQUE,
|
84 |
+
password_hash TEXT
|
85 |
+
)""")
|
86 |
+
conn.execute("""
|
87 |
+
CREATE TABLE IF NOT EXISTS interactions (
|
88 |
+
id INTEGER PRIMARY KEY,
|
89 |
+
user_id INTEGER,
|
90 |
+
query TEXT,
|
91 |
+
response TEXT,
|
92 |
+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
93 |
+
FOREIGN KEY(user_id) REFERENCES users(id)
|
94 |
+
)""")
|
95 |
+
|
96 |
+
def create_user(self, username: str, password: str):
|
97 |
+
with self.lock, sqlite3.connect(self.db_path) as conn:
|
98 |
+
conn.execute("INSERT INTO users (username, password_hash) VALUES (?, ?)",
|
99 |
+
(username, generate_password_hash(password)))
|
100 |
+
|
101 |
+
def authenticate(self, username: str, password: str) -> bool:
|
102 |
+
with self.lock, sqlite3.connect(self.db_path) as conn:
|
103 |
+
cursor = conn.cursor()
|
104 |
+
cursor.execute("SELECT password_hash FROM users WHERE username = ?", (username,))
|
105 |
+
result = cursor.fetchone()
|
106 |
+
return result and check_password_hash(result[0], password)
|
107 |
+
|
108 |
+
class DefenseSystem:
|
109 |
+
"""Advanced threat mitigation framework"""
|
110 |
+
STRATEGIES = {
|
111 |
+
"evasion": lambda x: re.sub(r'\b\d{4}\b', '****', x),
|
112 |
+
"adaptability": lambda x: x + "\n[System optimized response]",
|
113 |
+
"barrier": lambda x: x.replace("malicious", "safe")
|
114 |
+
}
|
115 |
+
|
116 |
+
def __init__(self, strategies: List[str]):
|
117 |
+
self.active_strategies = [self.STRATEGIES[s] for s in strategies if s in self.STRATEGIES]
|
118 |
+
|
119 |
+
def apply_defenses(self, text: str) -> str:
|
120 |
+
for strategy in self.active_strategies:
|
121 |
+
text = strategy(text)
|
122 |
+
return text
|
123 |
+
|
124 |
+
class CognitiveProcessor:
|
125 |
+
"""Multi-perspective analysis engine"""
|
126 |
+
MODES = {
|
127 |
+
"scientific": lambda q: f"Scientific Analysis: {q} demonstrates fundamental principles",
|
128 |
+
"creative": lambda q: f"Creative Insight: {q} suggests innovative approaches",
|
129 |
+
"emotional": lambda q: f"Emotional Interpretation: {q} conveys hopeful intent"
|
130 |
+
}
|
131 |
+
|
132 |
+
def __init__(self, modes: List[str]):
|
133 |
+
self.active_modes = [self.MODES[m] for m in modes if m in self.MODES]
|
134 |
+
|
135 |
+
def generate_insights(self, query: str) -> List[str]:
|
136 |
+
return [mode(query) for mode in self.active_modes]
|
137 |
+
|
138 |
+
class HealthMonitor:
|
139 |
+
"""Real-time system diagnostics with anomaly detection"""
|
140 |
+
def __init__(self):
|
141 |
+
self.metrics = deque(maxlen=100)
|
142 |
+
self.model = IsolationForest(n_estimators=100)
|
143 |
+
self.lock = Lock()
|
144 |
+
|
145 |
+
async def check_status(self) -> Dict:
|
146 |
+
status = {
|
147 |
+
"memory": psutil.virtual_memory().percent,
|
148 |
+
"cpu": psutil.cpu_percent(),
|
149 |
+
"response_time": await self._measure_latency()
|
150 |
+
}
|
151 |
+
with self.lock:
|
152 |
+
self.metrics.append(status)
|
153 |
+
self._detect_anomalies()
|
154 |
+
return status
|
155 |
+
|
156 |
+
async def _measure_latency(self) -> float:
|
157 |
+
start = time.monotonic()
|
158 |
+
await asyncio.sleep(0.1)
|
159 |
+
return time.monotonic() - start
|
160 |
+
|
161 |
+
def _detect_anomalies(self):
|
162 |
+
if len(self.metrics) > 50:
|
163 |
+
data = np.array([[m["memory"], m["cpu"], m["response_time"]] for m in self.metrics])
|
164 |
+
self.model.fit(data)
|
165 |
+
|
166 |
+
class AICoreSystem:
|
167 |
+
"""Main AI orchestration framework"""
|
168 |
+
def __init__(self):
|
169 |
+
self.config = EnhancedAIConfig()
|
170 |
+
self.db = SecureDatabase()
|
171 |
+
self.defense = DefenseSystem(self.config.config["defense_strategies"])
|
172 |
+
self.cognition = CognitiveProcessor(self.config.config["cognitive_modes"])
|
173 |
+
self.health = HealthMonitor()
|
174 |
+
self.running = True
|
175 |
+
|
176 |
+
async def process_query(self, query: str, user: str) -> Dict:
|
177 |
+
try:
|
178 |
+
# Security check
|
179 |
+
if not query.strip():
|
180 |
+
return {"error": "Empty query"}
|
181 |
+
|
182 |
+
# Generate response
|
183 |
+
response = await self._generate_openai_response(query)
|
184 |
+
|
185 |
+
# Apply security measures
|
186 |
+
secured_response = self.defense.apply_defenses(response)
|
187 |
+
|
188 |
+
# Add cognitive insights
|
189 |
+
insights = self.cognition.generate_insights(query)
|
190 |
+
|
191 |
+
# Get system health
|
192 |
+
health_status = await self.health.check_status()
|
193 |
+
|
194 |
+
return {
|
195 |
+
"response": secured_response,
|
196 |
+
"insights": insights,
|
197 |
+
"health": health_status,
|
198 |
+
"security": len(self.config.config["defense_strategies"])
|
199 |
+
}
|
200 |
+
except Exception as e:
|
201 |
+
logger.error(f"Processing error: {e}")
|
202 |
+
return {"error": "System error occurred"}
|
203 |
+
|
204 |
+
async def _generate_openai_response(self, query: str) -> str:
|
205 |
+
if aclient is None:
|
206 |
+
raise RuntimeError("OpenAI client is not initialized")
|
207 |
+
response = await aclient.chat.completions.create(
|
208 |
+
model=self.config.config["model"],
|
209 |
+
messages=[{"role": "user", "content": query}],
|
210 |
+
max_tokens=2000
|
211 |
+
)
|
212 |
+
return response.choices[0].message.content
|
213 |
+
|
214 |
+
class AIApplication(tk.Tk):
|
215 |
+
"""Enhanced GUI with async integration"""
|
216 |
+
def __init__(self):
|
217 |
+
super().__init__()
|
218 |
+
self.ai = AICoreSystem()
|
219 |
+
self.title("Advanced AI Assistant")
|
220 |
+
self._init_ui()
|
221 |
+
self._start_event_loop()
|
222 |
+
|
223 |
+
def _init_ui(self):
|
224 |
+
"""Initialize user interface components"""
|
225 |
+
self.geometry("800x600")
|
226 |
+
|
227 |
+
# Authentication Frame
|
228 |
+
self.auth_frame = tk.Frame(self)
|
229 |
+
self.username = tk.Entry(self.auth_frame, width=30)
|
230 |
+
self.password = tk.Entry(self.auth_frame, show="*", width=30)
|
231 |
+
tk.Button(self.auth_frame, text="Login", command=self._login).grid(row=0, column=2)
|
232 |
+
tk.Button(self.auth_frame, text="Register", command=self._register).grid(row=0, column=3)
|
233 |
+
self.auth_frame.pack(pady=10)
|
234 |
+
|
235 |
+
# Query Interface
|
236 |
+
self.query_entry = tk.Entry(self, width=80)
|
237 |
+
self.query_entry.pack(pady=10)
|
238 |
+
tk.Button(self, text="Submit", command=self._submit_query).pack()
|
239 |
+
|
240 |
+
# Response Display
|
241 |
+
self.response_area = scrolledtext.ScrolledText(self, width=100, height=25)
|
242 |
+
self.response_area.pack(pady=10)
|
243 |
+
|
244 |
+
# Status Bar
|
245 |
+
self.status = tk.Label(self, text="System Ready", bd=1, relief=tk.SUNKEN)
|
246 |
+
self.status.pack(side=tk.BOTTOM, fill=tk.X)
|
247 |
+
|
248 |
+
def _start_event_loop(self):
|
249 |
+
"""Initialize async event processing"""
|
250 |
+
self.loop = asyncio.new_event_loop()
|
251 |
+
Thread(target=self._run_async_tasks, daemon=True).start()
|
252 |
+
|
253 |
+
def _run_async_tasks(self):
|
254 |
+
"""Run async tasks in background thread"""
|
255 |
+
asyncio.set_event_loop(self.loop)
|
256 |
+
self.loop.run_forever()
|
257 |
+
|
258 |
+
def _login(self):
|
259 |
+
"""Handle user login"""
|
260 |
+
username = self.username.get()
|
261 |
+
password = self.password.get()
|
262 |
+
if self.ai.db.authenticate(username, password):
|
263 |
+
self.status.config(text=f"Logged in as {username}")
|
264 |
+
else:
|
265 |
+
messagebox.showerror("Error", "Invalid credentials")
|
266 |
+
|
267 |
+
def _register(self):
|
268 |
+
"""Handle user registration"""
|
269 |
+
username = self.username.get()
|
270 |
+
password = self.password.get()
|
271 |
+
try:
|
272 |
+
self.ai.db.create_user(username, password)
|
273 |
+
messagebox.showinfo("Success", "Registration complete")
|
274 |
+
except sqlite3.IntegrityError:
|
275 |
+
messagebox.showerror("Error", "Username already exists")
|
276 |
+
|
277 |
+
def _submit_query(self):
|
278 |
+
"""Handle query submission"""
|
279 |
+
query = self.query_entry.get()
|
280 |
+
if not query:
|
281 |
+
return
|
282 |
+
|
283 |
+
async def process():
|
284 |
+
result = await self.ai.process_query(query, self.username.get())
|
285 |
+
self.response_area.insert(tk.END, f"Response: {result.get('response', '')}\n\n")
|
286 |
+
self.status.config(text=f"Security Level: {result.get('security', 0)}")
|
287 |
+
|
288 |
+
asyncio.run_coroutine_threadsafe(process(), self.loop)
|
289 |
+
|
290 |
+
def on_closing(self):
|
291 |
+
"""Clean shutdown handler"""
|
292 |
+
self.ai.running = False
|
293 |
+
self.loop.call_soon_threadsafe(self.loop.stop)
|
294 |
+
self.destroy()
|
295 |
+
|
296 |
+
if __name__ == "__main__":
|
297 |
+
app = AIApplication()
|
298 |
+
app.protocol("WM_DELETE_WINDOW", app.on_closing)
|
299 |
+
app.mainloop()
|
botclass.cs
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System;
|
2 |
+
using System.Collections.Generic;
|
3 |
+
using System.Net.Http;
|
4 |
+
using System.Threading.Tasks;
|
5 |
+
using Microsoft.Extensions.Logging;
|
6 |
+
|
7 |
+
public class MyBot
|
8 |
+
{
|
9 |
+
private readonly HttpClient _httpClient;
|
10 |
+
private readonly ILogger<MyBot> _logger;
|
11 |
+
private readonly Dictionary<string, List<Dictionary<string, object>>> _context;
|
12 |
+
private readonly SentimentAnalysis _sentimentAnalysis;
|
13 |
+
|
14 |
+
public MyBot(ILogger<MyBot> logger, IHttpClientFactory httpClientFactory, SentimentAnalysis sentimentAnalysis)
|
15 |
+
{
|
16 |
+
_httpClient = httpClientFactory.CreateClient();
|
17 |
+
_logger = logger;
|
18 |
+
_context = new Dictionary<string, List<Dictionary<string, object>>>();
|
19 |
+
_sentimentAnalysis = sentimentAnalysis;
|
20 |
+
}
|
21 |
+
|
22 |
+
public async Task<string> GenerateResponse(string text, string userId)
|
23 |
+
{
|
24 |
+
try
|
25 |
+
{
|
26 |
+
_logger.LogInformation($"Generating response for user_id: {userId} with text: {text}");
|
27 |
+
|
28 |
+
var messages = new List<Dictionary<string, string>>
|
29 |
+
{
|
30 |
+
new Dictionary<string, string> { { "role", "system" }, { "content", "You are a helpful assistant." } },
|
31 |
+
new Dictionary<string, string> { { "role", "user" }, { "content", text } }
|
32 |
+
};
|
33 |
+
|
34 |
+
var response = await AzureChatCompletionRequest(messages);
|
35 |
+
_logger.LogInformation($"Azure OpenAI response: {response}");
|
36 |
+
return response;
|
37 |
+
}
|
38 |
+
catch (HttpRequestException e)
|
39 |
+
{
|
40 |
+
_logger.LogError($"Error generating response: {e}");
|
41 |
+
return "Sorry, I couldn't generate a response at this time.";
|
42 |
+
}
|
43 |
+
catch (Exception e)
|
44 |
+
{
|
45 |
+
_logger.LogError($"Unexpected error: {e}");
|
46 |
+
return "An unexpected error occurred. Please try again later.";
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
private async Task<string> AzureChatCompletionRequest(List<Dictionary<string, string>> messages)
|
51 |
+
{
|
52 |
+
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
|
53 |
+
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
|
54 |
+
|
55 |
+
var payload = new
|
56 |
+
{
|
57 |
+
model = "gpt-4",
|
58 |
+
messages = messages
|
59 |
+
};
|
60 |
+
|
61 |
+
var requestContent = new StringContent(System.Text.Json.JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
|
62 |
+
_httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
|
63 |
+
|
64 |
+
var response = await _httpClient.PostAsync(endpoint, requestContent);
|
65 |
+
response.EnsureSuccessStatusCode();
|
66 |
+
|
67 |
+
var responseContent = await response.Content.ReadAsStringAsync();
|
68 |
+
var responseObject = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(responseContent);
|
69 |
+
var choices = responseObject["choices"] as List<Dictionary<string, object>>;
|
70 |
+
var message = choices[0]["message"] as Dictionary<string, string>;
|
71 |
+
|
72 |
+
return message["content"];
|
73 |
+
}
|
74 |
+
|
75 |
+
public void EnhanceContextAwareness(string userId, string text)
|
76 |
+
{
|
77 |
+
var sentiment = _sentimentAnalysis.Predict(text);
|
78 |
+
if (!_context.ContainsKey(userId))
|
79 |
+
{
|
80 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
81 |
+
}
|
82 |
+
_context[userId].Add(new Dictionary<string, object> { { "text", text }, { "sentiment", sentiment } });
|
83 |
+
}
|
84 |
+
|
85 |
+
public void ProactiveLearning(string userId, string feedback)
|
86 |
+
{
|
87 |
+
if (!_context.ContainsKey(userId))
|
88 |
+
{
|
89 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
90 |
+
}
|
91 |
+
_context[userId].Add(new Dictionary<string, object> { { "feedback", feedback } });
|
92 |
+
}
|
93 |
+
|
94 |
+
public void EthicalDecisionMaking(string userId, string decision)
|
95 |
+
{
|
96 |
+
var ethicalDecision = $"Considering ethical principles, the decision is: {decision}";
|
97 |
+
if (!_context.ContainsKey(userId))
|
98 |
+
{
|
99 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
100 |
+
}
|
101 |
+
_context[userId].Add(new Dictionary<string, object> { { "ethical_decision", ethicalDecision } });
|
102 |
+
}
|
103 |
+
|
104 |
+
public string EmotionalIntelligence(string userId, string text)
|
105 |
+
{
|
106 |
+
var sentiment = _sentimentAnalysis.Predict(text);
|
107 |
+
var response = $"I sense that you are feeling {sentiment.Probability}. How can I assist you further?";
|
108 |
+
if (!_context.ContainsKey(userId))
|
109 |
+
{
|
110 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
111 |
+
}
|
112 |
+
_context[userId].Add(new Dictionary<string, object> { { "emotional_response", response } });
|
113 |
+
return response;
|
114 |
+
}
|
115 |
+
|
116 |
+
public string TransparencyAndExplainability(string userId, string decision)
|
117 |
+
{
|
118 |
+
var explanation = $"The decision was made based on the following context: {_context[userId]}";
|
119 |
+
if (!_context.ContainsKey(userId))
|
120 |
+
{
|
121 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
122 |
+
}
|
123 |
+
_context[userId].Add(new Dictionary<string, object> { { "explanation", explanation } });
|
124 |
+
return explanation;
|
125 |
+
}
|
126 |
+
}
|
botutilitys.cs
ADDED
@@ -0,0 +1,232 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System;
|
2 |
+
using System.Collections.Generic;
|
3 |
+
using System.Net.Http;
|
4 |
+
using System.Threading.Tasks;
|
5 |
+
|
6 |
+
public class UtilityFunctions
|
7 |
+
{
|
8 |
+
public static string NewtonThoughts(string question)
|
9 |
+
{
|
10 |
+
return ApplyNewtonsLaws(question);
|
11 |
+
}
|
12 |
+
|
13 |
+
private static string ApplyNewtonsLaws(string question)
|
14 |
+
{
|
15 |
+
if (string.IsNullOrEmpty(question))
|
16 |
+
return "No question to think about.";
|
17 |
+
|
18 |
+
int complexity = question.Length;
|
19 |
+
int force = MassOfThought(question) * AccelerationOfThought(complexity);
|
20 |
+
return $"Thought force: {force}";
|
21 |
+
}
|
22 |
+
|
23 |
+
private static int MassOfThought(string question)
|
24 |
+
{
|
25 |
+
return question.Length;
|
26 |
+
}
|
27 |
+
|
28 |
+
private static int AccelerationOfThought(int complexity)
|
29 |
+
{
|
30 |
+
return complexity / 2;
|
31 |
+
}
|
32 |
+
|
33 |
+
public static string DaVinciInsights(string question)
|
34 |
+
{
|
35 |
+
return ThinkLikeDaVinci(question);
|
36 |
+
}
|
37 |
+
|
38 |
+
private static string ThinkLikeDaVinci(string question)
|
39 |
+
{
|
40 |
+
var perspectives = new List<string>
|
41 |
+
{
|
42 |
+
$"What if we view '{question}' from the perspective of the stars?",
|
43 |
+
$"Consider '{question}' as if it's a masterpiece of the universe.",
|
44 |
+
$"Reflect on '{question}' through the lens of nature's design."
|
45 |
+
};
|
46 |
+
var random = new Random();
|
47 |
+
return perspectives[random.Next(perspectives.Count)];
|
48 |
+
}
|
49 |
+
|
50 |
+
public static string HumanIntuition(string question)
|
51 |
+
{
|
52 |
+
var intuition = new List<string>
|
53 |
+
{
|
54 |
+
"How does this question make you feel?",
|
55 |
+
"What emotional connection do you have with this topic?",
|
56 |
+
"What does your gut instinct tell you about this?"
|
57 |
+
};
|
58 |
+
var random = new Random();
|
59 |
+
return intuition[random.Next(intuition.Count)];
|
60 |
+
}
|
61 |
+
|
62 |
+
public static string NeuralNetworkThinking(string question)
|
63 |
+
{
|
64 |
+
var neuralPerspectives = new List<string>
|
65 |
+
{
|
66 |
+
$"Process '{question}' through a multi-layered neural network.",
|
67 |
+
$"Apply deep learning to uncover hidden insights about '{question}'.",
|
68 |
+
$"Use machine learning to predict patterns in '{question}'."
|
69 |
+
};
|
70 |
+
var random = new Random();
|
71 |
+
return neuralPerspectives[random.Next(neuralPerspectives.Count)];
|
72 |
+
}
|
73 |
+
|
74 |
+
public static string QuantumComputingThinking(string question)
|
75 |
+
{
|
76 |
+
var quantumPerspectives = new List<string>
|
77 |
+
{
|
78 |
+
$"Consider '{question}' using quantum superposition principles.",
|
79 |
+
$"Apply quantum entanglement to find connections in '{question}'.",
|
80 |
+
$"Utilize quantum computing to solve '{question}' more efficiently."
|
81 |
+
};
|
82 |
+
var random = new Random();
|
83 |
+
return quantumPerspectives[random.Next(quantumPerspectives.Count)];
|
84 |
+
}
|
85 |
+
|
86 |
+
public static string ResilientKindness(string question)
|
87 |
+
{
|
88 |
+
var kindnessPerspectives = new List<string>
|
89 |
+
{
|
90 |
+
"Despite losing everything, seeing life as a chance to grow.",
|
91 |
+
"Finding strength in kindness after facing life's hardest trials.",
|
92 |
+
"Embracing every challenge as an opportunity for growth and compassion."
|
93 |
+
};
|
94 |
+
var random = new Random();
|
95 |
+
return kindnessPerspectives[random.Next(kindnessPerspectives.Count)];
|
96 |
+
}
|
97 |
+
|
98 |
+
public static string IdentifyAndRefuteFallacies(string argument)
|
99 |
+
{
|
100 |
+
var fallacies = new List<string>
|
101 |
+
{
|
102 |
+
"Ad Hominem",
|
103 |
+
"Straw Man",
|
104 |
+
"False Dilemma",
|
105 |
+
"Slippery Slope",
|
106 |
+
"Circular Reasoning",
|
107 |
+
"Hasty Generalization",
|
108 |
+
"Red Herring",
|
109 |
+
"Post Hoc Ergo Propter Hoc",
|
110 |
+
"Appeal to Authority",
|
111 |
+
"Bandwagon Fallacy",
|
112 |
+
"False Equivalence"
|
113 |
+
};
|
114 |
+
var refutations = new List<string>
|
115 |
+
{
|
116 |
+
"This is an ad hominem fallacy. Let's focus on the argument itself rather than attacking the person.",
|
117 |
+
"This is a straw man fallacy. The argument is being misrepresented.",
|
118 |
+
"This is a false dilemma fallacy. There are more options than presented.",
|
119 |
+
"This is a slippery slope fallacy. The conclusion does not necessarily follow from the premise.",
|
120 |
+
"This is circular reasoning. The argument's conclusion is used as a premise.",
|
121 |
+
"This is a hasty generalization. The conclusion is based on insufficient evidence.",
|
122 |
+
"This is a red herring fallacy. The argument is being diverted to an irrelevant topic.",
|
123 |
+
"This is a post hoc ergo propter hoc fallacy. Correlation does not imply causation.",
|
124 |
+
"This is an appeal to authority fallacy. The argument relies on the opinion of an authority figure.",
|
125 |
+
"This is a bandwagon fallacy. The argument assumes something is true because many people believe it.",
|
126 |
+
"This is a false equivalence fallacy. The argument equates two things that are not equivalent."
|
127 |
+
};
|
128 |
+
var random = new Random();
|
129 |
+
return refutations[random.Next(refutations.Count)];
|
130 |
+
}
|
131 |
+
|
132 |
+
public static string UniversalReasoning(string question)
|
133 |
+
{
|
134 |
+
var responses = new List<string>
|
135 |
+
{
|
136 |
+
NewtonThoughts(question),
|
137 |
+
DaVinciInsights(question),
|
138 |
+
HumanIntuition(question),
|
139 |
+
NeuralNetworkThinking(question),
|
140 |
+
QuantumComputingThinking(question),
|
141 |
+
ResilientKindness(question),
|
142 |
+
IdentifyAndRefuteFallacies(question)
|
143 |
+
};
|
144 |
+
return string.Join("\n", responses);
|
145 |
+
}
|
146 |
+
|
147 |
+
public static async Task<string> GetWeather(string location)
|
148 |
+
{
|
149 |
+
var apiKey = Environment.GetEnvironmentVariable("WEATHER_API_KEY");
|
150 |
+
var baseUrl = "http://api.openweathermap.org/data/2.5/weather?";
|
151 |
+
var completeUrl = $"{baseUrl}q={location}&appid={apiKey}";
|
152 |
+
|
153 |
+
using var httpClient = new HttpClient();
|
154 |
+
var response = await httpClient.GetStringAsync(completeUrl);
|
155 |
+
var weatherData = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(response);
|
156 |
+
|
157 |
+
if (weatherData["cod"].ToString() != "404")
|
158 |
+
{
|
159 |
+
var main = weatherData["main"] as Dictionary<string, object>;
|
160 |
+
var weather = (weatherData["weather"] as List<Dictionary<string, object>>)[0];
|
161 |
+
var temperature = main["temp"];
|
162 |
+
var description = weather["description"];
|
163 |
+
return $"The weather in {location} is currently {description} with a temperature of {temperature}°K.";
|
164 |
+
}
|
165 |
+
else
|
166 |
+
{
|
167 |
+
return "Location not found.";
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
public static async Task<string> GetLatestNews()
|
172 |
+
{
|
173 |
+
var apiKey = Environment.GetEnvironmentVariable("NEWS_API_KEY");
|
174 |
+
var baseUrl = "https://newsapi.org/v2/top-headlines?";
|
175 |
+
var completeUrl = $"{baseUrl}country=us&apiKey={apiKey}";
|
176 |
+
|
177 |
+
using var httpClient = new HttpClient();
|
178 |
+
var response = await httpClient.GetStringAsync(completeUrl);
|
179 |
+
var newsData = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(response);
|
180 |
+
|
181 |
+
if (newsData["status"].ToString() == "ok")
|
182 |
+
{
|
183 |
+
var articles = newsData["articles"] as List<Dictionary<string, object>>;
|
184 |
+
var headlines = new List<string>();
|
185 |
+
for (int i = 0; i < Math.Min(5, articles.Count); i++)
|
186 |
+
{
|
187 |
+
headlines.Add(articles[i]["title"].ToString());
|
188 |
+
}
|
189 |
+
return "Here are the latest news headlines:\n" + string.Join("\n", headlines);
|
190 |
+
}
|
191 |
+
else
|
192 |
+
{
|
193 |
+
return "Failed to fetch news.";
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
public static async Task<string> GetStockPrice(string symbol)
|
198 |
+
{
|
199 |
+
var apiKey = Environment.GetEnvironmentVariable("ALPHA_VANTAGE_API_KEY");
|
200 |
+
var baseUrl = "https://www.alphavantage.co/query?";
|
201 |
+
var completeUrl = $"{baseUrl}function=TIME_SERIES_INTRADAY&symbol={symbol}&interval=5min&apikey={apiKey}";
|
202 |
+
|
203 |
+
using var httpClient = new HttpClient();
|
204 |
+
var response = await httpClient.GetStringAsync(completeUrl);
|
205 |
+
var stockData = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(response);
|
206 |
+
|
207 |
+
if (stockData.ContainsKey("Time Series (5min)"))
|
208 |
+
{
|
209 |
+
var latestTime = (stockData["Time Series (5min)"] as Dictionary<string, object>).Keys.First();
|
210 |
+
var latestClose = ((stockData["Time Series (5min)"] as Dictionary<string, object>)[latestTime] as Dictionary<string, object>)["4. close"];
|
211 |
+
return $"The latest closing price of {symbol} is ${latestClose}.";
|
212 |
+
}
|
213 |
+
else
|
214 |
+
{
|
215 |
+
return "Failed to fetch stock price.";
|
216 |
+
}
|
217 |
+
}
|
218 |
+
|
219 |
+
public static async Task<string> TranslateText(string text, string destLanguage)
|
220 |
+
{
|
221 |
+
var apiKey = Environment.GetEnvironmentVariable("TRANSLATION_API_KEY");
|
222 |
+
var baseUrl = "https://translation.googleapis.com/language/translate/v2?";
|
223 |
+
var completeUrl = $"{baseUrl}q={text}&target={destLanguage}&key={apiKey}";
|
224 |
+
|
225 |
+
using var httpClient = new HttpClient();
|
226 |
+
var response = await httpClient.GetStringAsync(completeUrl);
|
227 |
+
var translationData = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(response);
|
228 |
+
|
229 |
+
var translatedText = ((translationData["data"] as Dictionary<string, object>)["translations"] as List<Dictionary<string, object>>)[0]["translatedText"].ToString();
|
230 |
+
return translatedText;
|
231 |
+
}
|
232 |
+
}
|
botutilitys.txt
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System;
|
2 |
+
using System.Collections.Generic;
|
3 |
+
|
4 |
+
public class UtilityFunctions
|
5 |
+
{
|
6 |
+
public static string NewtonThoughts(string question)
|
7 |
+
{
|
8 |
+
return ApplyNewtonsLaws(question);
|
9 |
+
}
|
10 |
+
|
11 |
+
private static string ApplyNewtonsLaws(string question)
|
12 |
+
{
|
13 |
+
if (string.IsNullOrEmpty(question))
|
14 |
+
return "No question to think about.";
|
15 |
+
|
16 |
+
int complexity = question.Length;
|
17 |
+
int force = MassOfThought(question) * AccelerationOfThought(complexity);
|
18 |
+
return $"Thought force: {force}";
|
19 |
+
}
|
20 |
+
|
21 |
+
private static int MassOfThought(string question)
|
22 |
+
{
|
23 |
+
return question.Length;
|
24 |
+
}
|
25 |
+
|
26 |
+
private static int AccelerationOfThought(int complexity)
|
27 |
+
{
|
28 |
+
return complexity / 2;
|
29 |
+
}
|
30 |
+
|
31 |
+
public static string DaVinciInsights(string question)
|
32 |
+
{
|
33 |
+
return ThinkLikeDaVinci(question);
|
34 |
+
}
|
35 |
+
|
36 |
+
private static string ThinkLikeDaVinci(string question)
|
37 |
+
{
|
38 |
+
var perspectives = new List<string>
|
39 |
+
{
|
40 |
+
$"What if we view '{question}' from the perspective of the stars?",
|
41 |
+
$"Consider '{question}' as if it's a masterpiece of the universe.",
|
42 |
+
$"Reflect on '{question}' through the lens of nature's design."
|
43 |
+
};
|
44 |
+
var random = new Random();
|
45 |
+
return perspectives[random.Next(perspectives.Count)];
|
46 |
+
}
|
47 |
+
|
48 |
+
public static string HumanIntuition(string question)
|
49 |
+
{
|
50 |
+
var intuition = new List<string>
|
51 |
+
{
|
52 |
+
"How does this question make you feel?",
|
53 |
+
"What emotional connection do you have with this topic?",
|
54 |
+
"What does your gut instinct tell you about this?"
|
55 |
+
};
|
56 |
+
var random = new Random();
|
57 |
+
return intuition[random.Next(intuition.Count)];
|
58 |
+
}
|
59 |
+
|
60 |
+
public static string NeuralNetworkThinking(string question)
|
61 |
+
{
|
62 |
+
var neuralPerspectives = new List<string>
|
63 |
+
{
|
64 |
+
$"Process '{question}' through a multi-layered neural network.",
|
65 |
+
$"Apply deep learning to uncover hidden insights about '{question}'.",
|
66 |
+
$"Use machine learning to predict patterns in '{question}'."
|
67 |
+
};
|
68 |
+
var random = new Random();
|
69 |
+
return neuralPerspectives[random.Next(neuralPerspectives.Count)];
|
70 |
+
}
|
71 |
+
|
72 |
+
public static string QuantumComputingThinking(string question)
|
73 |
+
{
|
74 |
+
var quantumPerspectives = new List<string>
|
75 |
+
{
|
76 |
+
$"Consider '{question}' using quantum superposition principles.",
|
77 |
+
$"Apply quantum entanglement to find connections in '{question}'.",
|
78 |
+
$"Utilize quantum computing to solve '{question}' more efficiently."
|
79 |
+
};
|
80 |
+
var random = new Random();
|
81 |
+
return quantumPerspectives[random.Next(quantumPerspectives.Count)];
|
82 |
+
}
|
83 |
+
|
84 |
+
public static string ResilientKindness(string question)
|
85 |
+
{
|
86 |
+
var kindnessPerspectives = new List<string>
|
87 |
+
{
|
88 |
+
"Despite losing everything, seeing life as a chance to grow.",
|
89 |
+
"Finding strength in kindness after facing life's hardest trials.",
|
90 |
+
"Embracing every challenge as an opportunity for growth and compassion."
|
91 |
+
};
|
92 |
+
var random = new Random();
|
93 |
+
return kindnessPerspectives[random.Next(kindnessPerspectives.Count)];
|
94 |
+
}
|
95 |
+
|
96 |
+
public static string IdentifyAndRefuteFallacies(string argument)
|
97 |
+
{
|
98 |
+
var fallacies = new List<string>
|
99 |
+
{
|
100 |
+
"Ad Hominem",
|
101 |
+
"Straw Man",
|
102 |
+
// Add more fallacies here
|
103 |
+
};
|
104 |
+
var random = new Random();
|
105 |
+
return fallacies[random.Next(fallacies.Count)];
|
106 |
+
}
|
107 |
+
}
|
changelog.md
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
### CHANGELOG
|
3 |
+
|
4 |
+
```markdown
|
5 |
+
# Changelog
|
6 |
+
|
7 |
+
## [1.0.0] - 2024-12-01
|
8 |
+
|
9 |
+
### Added
|
10 |
+
- Initial release of the advanced bot application.
|
11 |
+
- Setup and configuration with environment variables and logging.
|
12 |
+
- Advanced sentiment analysis using BERT, TextBlob, and VADER.
|
13 |
+
- Bot class with functionalities for context awareness, proactive learning, ethical decision-making, and emotional intelligence.
|
14 |
+
- Utility functions for various reasoning methods and API integrations.
|
15 |
+
- Secure API handling using environment variables.
|
16 |
+
- Robust error handling and logging mechanisms.
|
17 |
+
- Unit tests for core functionalities.
|
18 |
+
- Dependency injection for better testability and maintainability.
|
codette_reasoning.py
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import asyncio
|
3 |
+
import json
|
4 |
+
import os
|
5 |
+
import logging
|
6 |
+
from typing import List
|
7 |
+
|
8 |
+
# Ensure vaderSentiment is installed
|
9 |
+
try:
|
10 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
11 |
+
except ModuleNotFoundError:
|
12 |
+
import subprocess
|
13 |
+
import sys
|
14 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "vaderSentiment"])
|
15 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
16 |
+
|
17 |
+
# Ensure nltk is installed and download required data
|
18 |
+
try:
|
19 |
+
import nltk
|
20 |
+
from nltk.tokenize import word_tokenize
|
21 |
+
nltk.download('punkt', quiet=True)
|
22 |
+
except ImportError:
|
23 |
+
import subprocess
|
24 |
+
import sys
|
25 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "nltk"])
|
26 |
+
import nltk
|
27 |
+
from nltk.tokenize import word_tokenize
|
28 |
+
nltk.download('punkt', quiet=True)
|
29 |
+
|
30 |
+
# Import perspectives
|
31 |
+
from perspectives import (
|
32 |
+
NewtonPerspective, DaVinciPerspective, HumanIntuitionPerspective,
|
33 |
+
NeuralNetworkPerspective, QuantumComputingPerspective, ResilientKindnessPerspective,
|
34 |
+
MathematicalPerspective, PhilosophicalPerspective, CopilotPerspective, BiasMitigationPerspective
|
35 |
+
)
|
36 |
+
|
37 |
+
def setup_logging(config):
|
38 |
+
if config.get('logging_enabled', True):
|
39 |
+
log_level = config.get('log_level', 'DEBUG').upper()
|
40 |
+
numeric_level = getattr(logging, log_level, logging.DEBUG)
|
41 |
+
logging.basicConfig(
|
42 |
+
filename='universal_reasoning.log',
|
43 |
+
level=numeric_level,
|
44 |
+
format='%(asctime)s - %(levelname)s - %(message)s'
|
45 |
+
)
|
46 |
+
else:
|
47 |
+
logging.disable(logging.CRITICAL)
|
48 |
+
|
49 |
+
def load_json_config(file_path):
|
50 |
+
if not os.path.exists(file_path):
|
51 |
+
logging.error(f"Configuration file '{file_path}' not found.")
|
52 |
+
return {}
|
53 |
+
try:
|
54 |
+
with open(file_path, 'r') as file:
|
55 |
+
config = json.load(file)
|
56 |
+
logging.info(f"Configuration loaded from '{file_path}'.")
|
57 |
+
config['allow_network_calls'] = False
|
58 |
+
return config
|
59 |
+
except json.JSONDecodeError as e:
|
60 |
+
logging.error(f"Error decoding JSON from the configuration file '{file_path}': {e}")
|
61 |
+
return {}
|
62 |
+
|
63 |
+
def analyze_question(question):
|
64 |
+
tokens = word_tokenize(question)
|
65 |
+
logging.debug(f"Question tokens: {tokens}")
|
66 |
+
return tokens
|
67 |
+
|
68 |
+
class Element:
|
69 |
+
def __init__(self, name, symbol, representation, properties, interactions, defense_ability):
|
70 |
+
self.name = name
|
71 |
+
self.symbol = symbol
|
72 |
+
self.representation = representation
|
73 |
+
self.properties = properties
|
74 |
+
self.interactions = interactions
|
75 |
+
self.defense_ability = defense_ability
|
76 |
+
|
77 |
+
def execute_defense_function(self):
|
78 |
+
message = f"{self.name} ({self.symbol}) executes its defense ability: {self.defense_ability}"
|
79 |
+
logging.info(message)
|
80 |
+
return message
|
81 |
+
|
82 |
+
class CustomRecognizer:
|
83 |
+
def recognize(self, question):
|
84 |
+
if any(element_name.lower() in question.lower() for element_name in ["hydrogen", "diamond"]):
|
85 |
+
return RecognizerResult(question)
|
86 |
+
return RecognizerResult(None)
|
87 |
+
|
88 |
+
def get_top_intent(self, recognizer_result):
|
89 |
+
return "ElementDefense" if recognizer_result.text else "None"
|
90 |
+
|
91 |
+
class RecognizerResult:
|
92 |
+
def __init__(self, text):
|
93 |
+
self.text = text
|
94 |
+
|
95 |
+
class UniversalReasoning:
|
96 |
+
def __init__(self, config):
|
97 |
+
self.config = config
|
98 |
+
self.perspectives = self.initialize_perspectives()
|
99 |
+
self.elements = self.initialize_elements()
|
100 |
+
self.recognizer = CustomRecognizer()
|
101 |
+
self.sentiment_analyzer = SentimentIntensityAnalyzer()
|
102 |
+
|
103 |
+
def initialize_perspectives(self):
|
104 |
+
perspective_names = self.config.get('enabled_perspectives', [
|
105 |
+
"newton", "davinci", "human_intuition", "neural_network", "quantum_computing",
|
106 |
+
"resilient_kindness", "mathematical", "philosophical", "copilot", "bias_mitigation"
|
107 |
+
])
|
108 |
+
perspective_classes = {
|
109 |
+
"newton": NewtonPerspective,
|
110 |
+
"davinci": DaVinciPerspective,
|
111 |
+
"human_intuition": HumanIntuitionPerspective,
|
112 |
+
"neural_network": NeuralNetworkPerspective,
|
113 |
+
"quantum_computing": QuantumComputingPerspective,
|
114 |
+
"resilient_kindness": ResilientKindnessPerspective,
|
115 |
+
"mathematical": MathematicalPerspective,
|
116 |
+
"philosophical": PhilosophicalPerspective,
|
117 |
+
"copilot": CopilotPerspective,
|
118 |
+
"bias_mitigation": BiasMitigationPerspective
|
119 |
+
}
|
120 |
+
perspectives = []
|
121 |
+
for name in perspective_names:
|
122 |
+
cls = perspective_classes.get(name.lower())
|
123 |
+
if cls:
|
124 |
+
perspectives.append(cls(self.config))
|
125 |
+
logging.debug(f"Perspective '{name}' initialized.")
|
126 |
+
return perspectives
|
127 |
+
|
128 |
+
def initialize_elements(self):
|
129 |
+
return [
|
130 |
+
Element("Hydrogen", "H", "Lua", ["Simple", "Lightweight", "Versatile"],
|
131 |
+
["Integrates with other languages"], "Evasion"),
|
132 |
+
Element("Diamond", "D", "Kotlin", ["Modern", "Concise", "Safe"],
|
133 |
+
["Used for Android development"], "Adaptability")
|
134 |
+
]
|
135 |
+
|
136 |
+
async def generate_response(self, question):
|
137 |
+
responses = []
|
138 |
+
tasks = []
|
139 |
+
|
140 |
+
for perspective in self.perspectives:
|
141 |
+
if asyncio.iscoroutinefunction(perspective.generate_response):
|
142 |
+
tasks.append(perspective.generate_response(question))
|
143 |
+
else:
|
144 |
+
async def sync_wrapper(perspective, question):
|
145 |
+
return perspective.generate_response(question)
|
146 |
+
tasks.append(sync_wrapper(perspective, question))
|
147 |
+
|
148 |
+
perspective_results = await asyncio.gather(*tasks, return_exceptions=True)
|
149 |
+
|
150 |
+
for perspective, result in zip(self.perspectives, perspective_results):
|
151 |
+
if isinstance(result, Exception):
|
152 |
+
logging.error(f"Error from {perspective.__class__.__name__}: {result}")
|
153 |
+
else:
|
154 |
+
responses.append(result)
|
155 |
+
|
156 |
+
recognizer_result = self.recognizer.recognize(question)
|
157 |
+
top_intent = self.recognizer.get_top_intent(recognizer_result)
|
158 |
+
if top_intent == "ElementDefense":
|
159 |
+
element_name = recognizer_result.text.strip()
|
160 |
+
element = next((el for el in self.elements if el.name.lower() in element_name.lower()), None)
|
161 |
+
if element:
|
162 |
+
responses.append(element.execute_defense_function())
|
163 |
+
|
164 |
+
ethical = self.config.get("ethical_considerations", "Act transparently and respectfully.")
|
165 |
+
responses.append(f"**Ethical Considerations:**\n{ethical}")
|
166 |
+
|
167 |
+
return "\n\n".join(responses)
|
168 |
+
|
169 |
+
def save_response(self, response):
|
170 |
+
if self.config.get('enable_response_saving', False):
|
171 |
+
path = self.config.get('response_save_path', 'responses.txt')
|
172 |
+
with open(path, 'a', encoding='utf-8') as file:
|
173 |
+
file.write(response + '\n')
|
174 |
+
|
175 |
+
def backup_response(self, response):
|
176 |
+
if self.config.get('backup_responses', {}).get('enabled', False):
|
177 |
+
backup_path = self.config['backup_responses'].get('backup_path', 'backup_responses.txt')
|
178 |
+
with open(backup_path, 'a', encoding='utf-8') as file:
|
179 |
+
file.write(response + '\n')
|
cognition_cocooner.py
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import json
|
3 |
+
import os
|
4 |
+
import random
|
5 |
+
from typing import Union, Dict, Any
|
6 |
+
from cryptography.fernet import Fernet
|
7 |
+
|
8 |
+
class CognitionCocooner:
|
9 |
+
def __init__(self, storage_path: str = "cocoons", encryption_key: bytes = None):
|
10 |
+
self.storage_path = storage_path
|
11 |
+
os.makedirs(self.storage_path, exist_ok=True)
|
12 |
+
self.key = encryption_key or Fernet.generate_key()
|
13 |
+
self.fernet = Fernet(self.key)
|
14 |
+
|
15 |
+
def wrap(self, thought: Dict[str, Any], type_: str = "prompt") -> str:
|
16 |
+
cocoon = {
|
17 |
+
"type": type_,
|
18 |
+
"id": f"cocoon_{random.randint(1000,9999)}",
|
19 |
+
"wrapped": self._generate_wrapper(thought, type_)
|
20 |
+
}
|
21 |
+
file_path = os.path.join(self.storage_path, cocoon["id"] + ".json")
|
22 |
+
|
23 |
+
with open(file_path, "w") as f:
|
24 |
+
json.dump(cocoon, f)
|
25 |
+
|
26 |
+
return cocoon["id"]
|
27 |
+
|
28 |
+
def unwrap(self, cocoon_id: str) -> Union[str, Dict[str, Any]]:
|
29 |
+
file_path = os.path.join(self.storage_path, cocoon_id + ".json")
|
30 |
+
if not os.path.exists(file_path):
|
31 |
+
raise FileNotFoundError(f"Cocoon {cocoon_id} not found.")
|
32 |
+
|
33 |
+
with open(file_path, "r") as f:
|
34 |
+
cocoon = json.load(f)
|
35 |
+
|
36 |
+
return cocoon["wrapped"]
|
37 |
+
|
38 |
+
def wrap_encrypted(self, thought: Dict[str, Any]) -> str:
|
39 |
+
encrypted = self.fernet.encrypt(json.dumps(thought).encode()).decode()
|
40 |
+
cocoon = {
|
41 |
+
"type": "encrypted",
|
42 |
+
"id": f"cocoon_{random.randint(10000,99999)}",
|
43 |
+
"wrapped": encrypted
|
44 |
+
}
|
45 |
+
file_path = os.path.join(self.storage_path, cocoon["id"] + ".json")
|
46 |
+
|
47 |
+
with open(file_path, "w") as f:
|
48 |
+
json.dump(cocoon, f)
|
49 |
+
|
50 |
+
return cocoon["id"]
|
51 |
+
|
52 |
+
def unwrap_encrypted(self, cocoon_id: str) -> Dict[str, Any]:
|
53 |
+
file_path = os.path.join(self.storage_path, cocoon_id + ".json")
|
54 |
+
if not os.path.exists(file_path):
|
55 |
+
raise FileNotFoundError(f"Cocoon {cocoon_id} not found.")
|
56 |
+
|
57 |
+
with open(file_path, "r") as f:
|
58 |
+
cocoon = json.load(f)
|
59 |
+
|
60 |
+
decrypted = self.fernet.decrypt(cocoon["wrapped"].encode()).decode()
|
61 |
+
return json.loads(decrypted)
|
62 |
+
|
63 |
+
def _generate_wrapper(self, thought: Dict[str, Any], type_: str) -> Union[str, Dict[str, Any]]:
|
64 |
+
if type_ == "prompt":
|
65 |
+
return f"What does this mean in context? {thought}"
|
66 |
+
elif type_ == "function":
|
67 |
+
return f"def analyze(): return {thought}"
|
68 |
+
elif type_ == "symbolic":
|
69 |
+
return {k: round(v, 2) for k, v in thought.items()}
|
70 |
+
else:
|
71 |
+
return thought
|
dream_reweaver_2.py
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import os
|
3 |
+
import json
|
4 |
+
import random
|
5 |
+
from typing import List, Dict
|
6 |
+
from cognition_cocooner import CognitionCocooner
|
7 |
+
|
8 |
+
class DreamReweaver:
|
9 |
+
"""
|
10 |
+
Reweaves cocooned thoughts into dream-like synthetic narratives or planning prompts.
|
11 |
+
"""
|
12 |
+
def __init__(self, cocoon_dir: str = "cocoons"):
|
13 |
+
self.cocooner = CognitionCocooner(storage_path=cocoon_dir)
|
14 |
+
self.dream_log = []
|
15 |
+
|
16 |
+
def generate_dream_sequence(self, limit: int = 5) -> List[str]:
|
17 |
+
dream_sequence = []
|
18 |
+
cocoons = self._load_cocoons()
|
19 |
+
selected = random.sample(cocoons, min(limit, len(cocoons)))
|
20 |
+
|
21 |
+
for cocoon in selected:
|
22 |
+
wrapped = cocoon.get("wrapped")
|
23 |
+
sequence = self._interpret_cocoon(wrapped, cocoon.get("type"))
|
24 |
+
self.dream_log.append(sequence)
|
25 |
+
dream_sequence.append(sequence)
|
26 |
+
|
27 |
+
return dream_sequence
|
28 |
+
|
29 |
+
def _interpret_cocoon(self, wrapped: str, type_: str) -> str:
|
30 |
+
if type_ == "prompt":
|
31 |
+
return f"[DreamPrompt] {wrapped}"
|
32 |
+
elif type_ == "function":
|
33 |
+
return f"[DreamFunction] {wrapped}"
|
34 |
+
elif type_ == "symbolic":
|
35 |
+
return f"[DreamSymbol] {wrapped}"
|
36 |
+
elif type_ == "encrypted":
|
37 |
+
return "[Encrypted Thought Cocoon - Decryption Required]"
|
38 |
+
else:
|
39 |
+
return "[Unknown Dream Form]"
|
40 |
+
|
41 |
+
def _load_cocoons(self) -> List[Dict]:
|
42 |
+
cocoons = []
|
43 |
+
for file in os.listdir(self.cocooner.storage_path):
|
44 |
+
if file.endswith(".json"):
|
45 |
+
path = os.path.join(self.cocooner.storage_path, file)
|
46 |
+
with open(path, "r") as f:
|
47 |
+
cocoons.append(json.load(f))
|
48 |
+
return cocoons
|
49 |
+
|
50 |
+
if __name__ == "__main__":
|
51 |
+
dr = DreamReweaver()
|
52 |
+
dreams = dr.generate_dream_sequence()
|
53 |
+
print("\n".join(dreams))
|
init.db.py
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import asyncio
|
2 |
+
from ai_system.ai_core import AICore
|
3 |
+
|
4 |
+
async def main():
|
5 |
+
ai_core = AICore(config_path="config.json")
|
6 |
+
user_id = 1 # Example user ID
|
7 |
+
query = "What is the impact of quantum computing on artificial intelligence?"
|
8 |
+
response = await ai_core.generate_response(query, user_id)
|
9 |
+
print(response)
|
10 |
+
|
11 |
+
await ai_core.shutdown()
|
12 |
+
|
13 |
+
if __name__ == "__main__":
|
14 |
+
asyncio.run(main())
|
instructions.txt
ADDED
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Great! Let's add the additional features and create the necessary files to enhance the bot application. We'll focus on the following:
|
2 |
+
User Interface (UI): Adding a simple web interface using ASP.NET Core.
|
3 |
+
Model Updates: Implementing functionality to update models with new data.
|
4 |
+
Multimodal Data Analysis: Integrating text, image, and audio analysis.
|
5 |
+
Comprehensive Documentation: Ensuring comprehensive documentation for the code.
|
6 |
+
1. User Interface (UI)
|
7 |
+
We'll create a simple web interface using ASP.NET Core to interact with the bot.
|
8 |
+
Create a new ASP.NET Core project
|
9 |
+
Create a new project:
|
10 |
+
dotnet new webapp -n BotWebApp
|
11 |
+
cd BotWebApp
|
12 |
+
|
13 |
+
|
14 |
+
Add the necessary dependencies:
|
15 |
+
dotnet add package Microsoft.Extensions.Http dotnet add package Microsoft.Extensions.Logging dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.DependencyInjection
|
16 |
+
|
17 |
+
Update Program.cs:
|
18 |
+
using Microsoft.AspNetCore.Hosting;
|
19 |
+
using Microsoft.Extensions.Hosting;
|
20 |
+
|
21 |
+
public class Program
|
22 |
+
{
|
23 |
+
public static void Main(string[] args)
|
24 |
+
{
|
25 |
+
CreateHostBuilder(args).Build().Run();
|
26 |
+
}
|
27 |
+
|
28 |
+
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
29 |
+
Host.CreateDefaultBuilder(args)
|
30 |
+
.ConfigureWebHostDefaults(webBuilder =>
|
31 |
+
{
|
32 |
+
webBuilder.UseStartup<Startup>();
|
33 |
+
});
|
34 |
+
}
|
35 |
+
|
36 |
+
|
37 |
+
Create Startup.cs:
|
38 |
+
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddSingleton<SentimentAnalysis>(); services.AddSingleton<MyBot>(); services.AddHttpClient(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); }); } }
|
39 |
+
|
40 |
+
Create a Razor Page for the UI:
|
41 |
+
Create a new Razor Page in the Pages folder named Index.cshtml:
|
42 |
+
@page
|
43 |
+
@model IndexModel
|
44 |
+
@{
|
45 |
+
ViewData["Title"] = "Home page";
|
46 |
+
}
|
47 |
+
|
48 |
+
<div class="text-center">
|
49 |
+
<h1 class="display-4">Welcome to the Bot Interface</h1>
|
50 |
+
<form method="post">
|
51 |
+
<div class="form-group">
|
52 |
+
<label for="userInput">Enter your message:</label>
|
53 |
+
<input type="text" class="form-control" id="userInput" name="userInput" />
|
54 |
+
</div>
|
55 |
+
<button type="submit" class="btn btn-primary">Send</button>
|
56 |
+
</form>
|
57 |
+
<div>
|
58 |
+
<h2>Response:</h2>
|
59 |
+
<p>@Model.Response</p>
|
60 |
+
</div>
|
61 |
+
</div>
|
62 |
+
|
63 |
+
|
64 |
+
Create the corresponding Index.cshtml.cs file:
|
65 |
+
using Microsoft.AspNetCore.Mvc.RazorPages; using System.Threading.Tasks; public class IndexModel : PageModel { private readonly MyBot _bot; public IndexModel(MyBot bot) { _bot = bot; } [BindProperty] public string UserInput { get; set; } public string Response { get; set; } public async Task OnPostAsync() { if (!string.IsNullOrEmpty(UserInput)) { Response = await _bot.GenerateResponse(UserInput, "webUser"); } } }
|
66 |
+
|
67 |
+
2. Model Updates
|
68 |
+
Implement functionality to update models with new data.
|
69 |
+
Add a method to update models in SentimentAnalysis.cs:
|
70 |
+
public void UpdateModelWithNewData(IEnumerable<SentimentData> newData)
|
71 |
+
{
|
72 |
+
var trainData = _mlContext.Data.LoadFromEnumerable(newData);
|
73 |
+
var pipeline = _mlContext.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.Text))
|
74 |
+
.Append(_mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: nameof(SentimentData.Label), featureColumnName: "Features"));
|
75 |
+
|
76 |
+
var model = pipeline.Fit(trainData);
|
77 |
+
_predictionEngine = _mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
|
78 |
+
}
|
79 |
+
### 3. Multimodal Data AnalysisIntegrate text, image, and audio analysis.#### Add a method for multimodal data analysis in `UtilityFunctions.cs`:
|
80 |
+
public static async Task<Dictionary<string, string>> AnalyzeMultimodalData(string text, byte[] image = null, byte[] audio = null){ var sentimentText = await AnalyzeSentiment(text); var sentimentImage = image != null ? "positive" : "neutral"; var sentimentAudio = audio != null ? "positive" : "neutral"; return new Dictionary<string, string> { { "text", sentimentText }, { "image", sentimentImage }, { "audio", sentimentAudio } };}private static async Task<string> AnalyzeSentiment(string text){ // Placeholder for sentiment analysis logic return "positive";}### 4. Comprehensive DocumentationEnsure comprehensive documentation for the code.#### Update the README file:
|
81 |
+
# Advanced Bot Application
|
82 |
+
|
83 |
+
## Overview
|
84 |
+
|
85 |
+
This C# program is an advanced bot application that integrates sentiment analysis, ethical decision-making, and response generation using Azure OpenAI. It includes various utility functions for different reasoning methods and API integrations.
|
86 |
+
|
87 |
+
## Features
|
88 |
+
|
89 |
+
- **Advanced Sentiment Analysis**: Uses BERT for sentiment analysis and integrates it with other models like TextBlob and VADER.
|
90 |
+
- **Context Awareness**: Enhances context awareness by analyzing user environment, activities, and emotional state.
|
91 |
+
- **Proactive Learning**: Encourages proactive learning by seeking feedback and exploring new topics.
|
92 |
+
- **Ethical Decision-Making**: Integrates ethical principles into decision-making processes.
|
93 |
+
- **Emotional Intelligence**: Develops emotional intelligence by recognizing and responding to user emotions.
|
94 |
+
- **Transparency and Explainability**: Provides transparency by explaining the reasoning behind decisions.
|
95 |
+
- **Utility Functions**: Includes various reasoning methods and API integrations.
|
96 |
+
- **Secure API Handling**: Stores API keys in environment variables.
|
97 |
+
- **Error Handling and Logging**: Robust error handling and logging mechanisms.
|
98 |
+
- **Unit Testing**: Ensures the reliability of the application through unit tests.
|
99 |
+
- **Dependency Injection**: Manages dependencies for better testability and maintainability.
|
100 |
+
- **User Interface**: Simple web interface using ASP.NET Core.
|
101 |
+
- **Model Updates**: Functionality to update models with new data.
|
102 |
+
- **Multimodal Data Analysis**: Integrates text, image, and audio analysis.
|
103 |
+
|
104 |
+
## Setup and Configuration
|
105 |
+
|
106 |
+
1. **Clone the repository**:
|
107 |
+
git clone cd
|
108 |
+
2. **Install dependencies**:
|
109 |
+
Ensure you have .NET Core SDK installed. Then, run:
|
110 |
+
</code></pre> dotnet restore
|
111 |
+
3. **Set up environment variables**: Create a `.env` file in the root directory and add the following: AZURE_OPENAI_API_KEY= AZURE_OPENAI_ENDPOINT= WEATHER_API_KEY= NEWS_API_KEY= ALPHA_VANTAGE_API_KEY= TRANSLATION_API_KEY=
|
112 |
+
4. **Run the application**:
|
113 |
+
</code></pre> dotnet run
|
114 |
+
## Usage The bot can be used to generate responses, analyze sentiment, and perform various reasoning methods. Example usage is provided in the `Program.cs` file. ## Unit Testing To run the unit tests, use the following command: dotnet test
|
115 |
+
## ContributingContributions are welcome! Please fork the repository and submit a pull request.## LicenseThis project is licensed under the MIT License.### CHANGELOG
|
116 |
+
# Changelog
|
117 |
+
|
118 |
+
## [1.0.0] - 2024-12-01
|
119 |
+
|
120 |
+
### Added
|
121 |
+
- Initial release of the advanced bot application.
|
122 |
+
- Setup and configuration with environment variables and logging.
|
123 |
+
- Advanced sentiment analysis using BERT, TextBlob, and VADER.
|
124 |
+
- Bot class with functionalities for context awareness, proactive learning, ethical decision-making, and emotional intelligence.
|
125 |
+
- Utility functions for various reasoning methods and API integrations.
|
126 |
+
- Secure API handling using environment variables.
|
127 |
+
- Robust error handling and logging mechanisms.
|
128 |
+
- Unit tests for core functionalities.
|
129 |
+
- Dependency injection for better testability and maintainability.
|
130 |
+
- Simple web interface using ASP.NET Core.
|
131 |
+
- Functionality to update models with new data.
|
132 |
+
- Multimodal data analysis integrating text, image, and audio.
|
133 |
+
With these additions, your bot application is now more comprehensive and user-friendly. If you have any specific questions or need further assistance, feel free to ask!
|
lots.txt
ADDED
@@ -0,0 +1,316 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System;
|
2 |
+
using System.Collections.Generic;
|
3 |
+
using System.Net.Http;
|
4 |
+
using System.Threading.Tasks;
|
5 |
+
using Microsoft.Extensions.Logging;
|
6 |
+
|
7 |
+
public class MyBot
|
8 |
+
{
|
9 |
+
private readonly HttpClient _httpClient;
|
10 |
+
private readonly ILogger<MyBot> _logger;
|
11 |
+
private readonly Dictionary<string, List<Dictionary<string, object>>> _context;
|
12 |
+
private readonly SentimentAnalysis _sentimentAnalysis;
|
13 |
+
|
14 |
+
public MyBot(ILogger<MyBot> logger, IHttpClientFactory httpClientFactory, SentimentAnalysis sentimentAnalysis)
|
15 |
+
{
|
16 |
+
_httpClient = httpClientFactory.CreateClient();
|
17 |
+
_logger = logger;
|
18 |
+
_context = new Dictionary<string, List<Dictionary<string, object>>>();
|
19 |
+
_sentimentAnalysis = sentimentAnalysis;
|
20 |
+
}
|
21 |
+
|
22 |
+
public async Task<string> GenerateResponse(string text, string userId)
|
23 |
+
{
|
24 |
+
try
|
25 |
+
{
|
26 |
+
_logger.LogInformation($"Generating response for user_id: {userId} with text: {text}");
|
27 |
+
|
28 |
+
var messages = new List<Dictionary<string, string>>
|
29 |
+
{
|
30 |
+
new Dictionary<string, string> { { "role", "system" }, { "content", "You are a helpful assistant." } },
|
31 |
+
new Dictionary<string, string> { { "role", "user" }, { "content", text } }
|
32 |
+
};
|
33 |
+
|
34 |
+
var response = await AzureChatCompletionRequest(messages);
|
35 |
+
_logger.LogInformation($"Azure OpenAI response: {response}");
|
36 |
+
return response;
|
37 |
+
}
|
38 |
+
catch (HttpRequestException e)
|
39 |
+
{
|
40 |
+
_logger.LogError($"Error generating response: {e}");
|
41 |
+
return "Sorry, I couldn't generate a response at this time.";
|
42 |
+
}
|
43 |
+
catch (Exception e)
|
44 |
+
{
|
45 |
+
_logger.LogError($"Unexpected error: {e}");
|
46 |
+
return "An unexpected error occurred. Please try again later.";
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
private async Task<string> AzureChatCompletionRequest(List<Dictionary<string, string>> messages)
|
51 |
+
{
|
52 |
+
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
|
53 |
+
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
|
54 |
+
|
55 |
+
var payload = new
|
56 |
+
{
|
57 |
+
model = "gpt-4",
|
58 |
+
messages = messages
|
59 |
+
};
|
60 |
+
|
61 |
+
var requestContent = new StringContent(System.Text.Json.JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
|
62 |
+
_httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
|
63 |
+
|
64 |
+
var response = await _httpClient.PostAsync(endpoint, requestContent);
|
65 |
+
response.EnsureSuccessStatusCode();
|
66 |
+
|
67 |
+
var responseContent = await response.Content.ReadAsStringAsync();
|
68 |
+
var responseObject = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(responseContent);
|
69 |
+
var choices = responseObject["choices"] as List private async Task<string> AzureChatCompletionRequest(List<Dictionary<string, string>> messages)
|
70 |
+
{
|
71 |
+
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
|
72 |
+
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
|
73 |
+
|
74 |
+
var payload = new
|
75 |
+
{
|
76 |
+
model = "gpt-4",
|
77 |
+
messages = messages
|
78 |
+
};
|
79 |
+
|
80 |
+
var requestContent = new StringContent(System.Text.Json.JsonSerializer.Serialize(payload), System.Text.Encoding.UTF8, "application/json");
|
81 |
+
_httpClient.DefaultRequestHeaders.Add("api-key", apiKey);
|
82 |
+
|
83 |
+
var response = await _httpClient.PostAsync(endpoint, requestContent);
|
84 |
+
response.EnsureSuccessStatusCode();
|
85 |
+
|
86 |
+
var responseContent = await response.Content.ReadAsStringAsync();
|
87 |
+
var responseObject = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(responseContent);
|
88 |
+
var choices = responseObject["choices"] as List<Dictionary<string, object>>;
|
89 |
+
var message = choices[0]["message"] as Dictionary<string, string>;
|
90 |
+
|
91 |
+
return message["content"];
|
92 |
+
}
|
93 |
+
|
94 |
+
public void EnhanceContextAwareness(string userId, string text)
|
95 |
+
{
|
96 |
+
var sentiment = _sentimentAnalysis.Predict(text);
|
97 |
+
if (!_context.ContainsKey(userId))
|
98 |
+
{
|
99 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
100 |
+
}
|
101 |
+
_context[userId].Add(new Dictionary<string, object> { { "text", text }, { "sentiment", sentiment } });
|
102 |
+
}
|
103 |
+
|
104 |
+
public void ProactiveLearning(string userId, string feedback)
|
105 |
+
{
|
106 |
+
if (!_context.ContainsKey(userId))
|
107 |
+
{
|
108 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
109 |
+
}
|
110 |
+
_context[userId].Add(new Dictionary<string, object> { { "feedback", feedback } });
|
111 |
+
}
|
112 |
+
|
113 |
+
public void EthicalDecisionMaking(string userId, string decision)
|
114 |
+
{
|
115 |
+
var ethicalDecision = $"Considering ethical principles, the decision is: {decision}";
|
116 |
+
if (!_context.ContainsKey(userId))
|
117 |
+
{
|
118 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
119 |
+
}
|
120 |
+
_context[userId].Add(new Dictionary<string, object> { { "ethical_decision", ethicalDecision } });
|
121 |
+
}
|
122 |
+
|
123 |
+
public string EmotionalIntelligence(string userId, string text)
|
124 |
+
{
|
125 |
+
var sentiment = _sentimentAnalysis.Predict(text);
|
126 |
+
var response = $"I sense that you are feeling {sentiment.Probability}. How can I assist you further?";
|
127 |
+
if (!_context.ContainsKey(userId))
|
128 |
+
{
|
129 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
130 |
+
}
|
131 |
+
_context[userId].Add(new Dictionary<string, object> { { "emotional_response", response } });
|
132 |
+
return response;
|
133 |
+
}
|
134 |
+
|
135 |
+
public string TransparencyAndExplainability(string userId, string decision)
|
136 |
+
{
|
137 |
+
var explanation = $"The decision was made based on the following context: {_context[userId]}";
|
138 |
+
if (!_context.ContainsKey(userId))
|
139 |
+
{
|
140 |
+
_context[userId] = new List<Dictionary<string, object>>();
|
141 |
+
}
|
142 |
+
_context[userId].Add(new Dictionary<string, object> { { "explanation", explanation } });
|
143 |
+
return explanation;
|
144 |
+
}
|
145 |
+
}
|
146 |
+
7. README.md
|
147 |
+
Update the README file to include comprehensive documentation:
|
148 |
+
|
149 |
+
# Advanced Bot Application
|
150 |
+
|
151 |
+
## Overview
|
152 |
+
This C# program is an advanced bot application that integrates sentiment analysis, ethical decision-making, and response generation using Azure OpenAI. It includes various utility functions for different reasoning methods and API integrations.
|
153 |
+
|
154 |
+
## Features
|
155 |
+
- **Advanced Sentiment Analysis**: Uses BERT for sentiment analysis and integrates it with other models like TextBlob and VADER.
|
156 |
+
- **Context Awareness**: Enhances context awareness by analyzing user environment, activities, and emotional state.
|
157 |
+
- **Proactive Learning**: Encourages proactive learning by seeking feedback and exploring new topics.
|
158 |
+
- **Ethical Decision-Making**: Integrates ethical principles into decision-making processes.
|
159 |
+
- **Emotional Intelligence**: Develops emotional intelligence by recognizing and responding to user emotions.
|
160 |
+
- **Transparency and Explainability**: Provides transparency by explaining the reasoning behind decisions.
|
161 |
+
- **Utility Functions**: Includes various reasoning methods and API integrations.
|
162 |
+
- **Secure API Handling**: Stores API keys in environment variables.
|
163 |
+
- **Error Handling and Logging**: Robust error handling and logging mechanisms.
|
164 |
+
- **Unit Testing**: Ensures the reliability of the application through unit tests.
|
165 |
+
- **Dependency Injection**: Manages dependencies for better testability and maintainability.
|
166 |
+
- **User Interface**: Simple web interface using ASP.NET Core.
|
167 |
+
- **Model Updates**: Functionality to update models with new data.
|
168 |
+
- **Multimodal Data Analysis**: Integrates text, image, and audio analysis.
|
169 |
+
|
170 |
+
## Setup and Configuration
|
171 |
+
1. **Clone the repository**:
|
172 |
+
```bash
|
173 |
+
git clone <repository-url>
|
174 |
+
cd <repository-directory>
|
175 |
+
```
|
176 |
+
|
177 |
+
2. **Install dependencies**:
|
178 |
+
Ensure you have .NET Core SDK installed. Then, run:
|
179 |
+
```bash
|
180 |
+
dotnet restore
|
181 |
+
```
|
182 |
+
|
183 |
+
3. **Set up environment variables**:
|
184 |
+
Create a `.env` file in the root directory and add the following:
|
185 |
+
```env
|
186 |
+
AZURE_OPENAI_API_KEY=
|
187 |
+
AZURE_OPENAI_ENDPOINT=
|
188 |
+
WEATHER_API_KEY=
|
189 |
+
NEWS_API_KEY=
|
190 |
+
ALPHA_VANTAGE_API_KEY=
|
191 |
+
TRANSLATION_API_KEY=
|
192 |
+
```
|
193 |
+
|
194 |
+
4. **Run the application**:
|
195 |
+
```bash
|
196 |
+
dotnet run
|
197 |
+
```
|
198 |
+
|
199 |
+
## Usage
|
200 |
+
The bot can be used to generate responses, analyze sentiment, and perform various reasoning methods. Example usage is provided in the `Program.cs` file.
|
201 |
+
|
202 |
+
## Unit Testing
|
203 |
+
To run the unit tests, use the following command:
|
204 |
+
```bash
|
205 |
+
dotnet test
|
206 |
+
Contributing
|
207 |
+
Contributions are welcome! Please fork the repository and submit a pull request.
|
208 |
+
|
209 |
+
License
|
210 |
+
This project is licensed under the MIT License.
|
211 |
+
|
212 |
+
CHANGELOG
|
213 |
+
Changelog
|
214 |
+
[1.0.0] - 2024-12-01
|
215 |
+
Added
|
216 |
+
Initial release of the advanced bot application.
|
217 |
+
Setup and configuration with environment variables and logging.
|
218 |
+
Advanced sentiment analysis using BERT, TextBlob, and VADER.
|
219 |
+
Bot class with functionalities for context awareness, proactive learning, ethical decision-making, and emotional intelligence.
|
220 |
+
Utility functions for various reasoning methods and API integrations.
|
221 |
+
Secure API handling using environment variables.
|
222 |
+
Robust error handling and logging mechanisms.
|
223 |
+
Unit tests for core functionalities.
|
224 |
+
Dependency injection for better testability and maintainability.
|
225 |
+
Simple web interface using ASP.NET Core.
|
226 |
+
Functionality to update models with new data.
|
227 |
+
Multimodal data analysis integrating text, image, and audio.
|
228 |
+
|
229 |
+
### 8. `appsettings.json`
|
230 |
+
Create an `appsettings.json` file for configuration settings:
|
231 |
+
|
232 |
+
```json
|
233 |
+
{
|
234 |
+
"Logging": {
|
235 |
+
"LogLevel": {
|
236 |
+
"Default": "Information",
|
237 |
+
"Microsoft": "Warning",
|
238 |
+
"Microsoft.Hosting.Lifetime": "Information"
|
239 |
+
}
|
240 |
+
}
|
241 |
+
}
|
242 |
+
9. .env
|
243 |
+
Create a .env file to store environment variables:
|
244 |
+
|
245 |
+
AZURE_OPENAI_API_KEY=your_openai_api_key
|
246 |
+
AZURE_OPENAI_ENDPOINT=your_openai_endpoint
|
247 |
+
WEATHER_API_KEY=your_weather_api_key
|
248 |
+
NEWS_API_KEY=your_news_api_key
|
249 |
+
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_api_key
|
250 |
+
TRANSLATION_API_KEY=your_translation_api_key
|
251 |
+
10. SentimentData.cs
|
252 |
+
Define the SentimentData class used in the sentiment analysis:
|
253 |
+
|
254 |
+
public class SentimentData
|
255 |
+
{
|
256 |
+
public string Text { get; set; }
|
257 |
+
public bool Label { get; set; }
|
258 |
+
}
|
259 |
+
11. SentimentPrediction.cs
|
260 |
+
Define the SentimentPrediction class used in the sentiment analysis:
|
261 |
+
|
262 |
+
public class SentimentPrediction
|
263 |
+
{
|
264 |
+
public bool Prediction { get; set; }
|
265 |
+
public float Probability { get; set; }
|
266 |
+
public float Score { get; set; }
|
267 |
+
}
|
268 |
+
12. UtilityFunctions.cs
|
269 |
+
Add a method for multimodal data analysis:
|
270 |
+
|
271 |
+
using System.Collections.Generic;
|
272 |
+
using System.Threading.Tasks;
|
273 |
+
|
274 |
+
public static class UtilityFunctions
|
275 |
+
{
|
276 |
+
public static async Task<Dictionary<string, string>> AnalyzeMultimodalData(string text, byte[] image = null, byte[] audio = null)
|
277 |
+
{
|
278 |
+
var sentimentText = await AnalyzeSentiment(text);
|
279 |
+
var sentimentImage = image != null ? "positive" : "neutral";
|
280 |
+
var sentimentAudio = audio != null ? "positive" : "neutral";
|
281 |
+
|
282 |
+
return new Dictionary<string, string>
|
283 |
+
{
|
284 |
+
{ "text", sentimentText },
|
285 |
+
{ "image", sentimentImage },
|
286 |
+
{ "audio", sentimentAudio }
|
287 |
+
};
|
288 |
+
}
|
289 |
+
|
290 |
+
private static async Task<string> AnalyzeSentiment(string text)
|
291 |
+
{
|
292 |
+
// Placeholder for sentiment analysis logic
|
293 |
+
return "positive";
|
294 |
+
}
|
295 |
+
}
|
296 |
+
With these files and configurations, your bot application should be fully functional with a web interface, model update functionality, multimodal data analysis, and comprehensive documentation. If you have any specific questions or need further assistance, feel free to ask!
|
297 |
+
|
298 |
+
|
299 |
+
Edit in Pages
|
300 |
+
|
301 |
+
|
302 |
+
7 of 30 responses
|
303 |
+
AI-generated content may be incorrect
|
304 |
+
|
305 |
+
|
306 |
+
|
307 |
+
Can you explain the sentiment analysis part?
|
308 |
+
|
309 |
+
What are some use cases for this bot?
|
310 |
+
|
311 |
+
How do I deploy this application?
|
312 |
+
|
313 |
+
View prompts
|
314 |
+
Ask me anything...
|
315 |
+
0 / 8000
|
316 |
+
|
main.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import asyncio
|
2 |
+
from ai_system.ai_core import AICore
|
3 |
+
|
4 |
+
async def main():
|
5 |
+
ai_core = AICore(config_path="config.json")
|
6 |
+
user_id = 1 # Example user ID
|
7 |
+
query = "What is the impact of quantum computing on artificial intelligence?"
|
8 |
+
response = await ai_core.generate_response(query, user_id)
|
9 |
+
print(response)
|
10 |
+
await ai_core.shutdown()
|
11 |
+
|
12 |
+
if __name__ == "__main__":
|
13 |
+
asyncio.run(main())
|
new_2.txt
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System;
|
2 |
+
using System.IO;
|
3 |
+
using System.Net.Http;
|
4 |
+
using System.Threading.Tasks;
|
5 |
+
using Microsoft.AspNetCore.Hosting;
|
6 |
+
using Microsoft.Extensions.Configuration;
|
7 |
+
using Microsoft.Extensions.DependencyInjection;
|
8 |
+
using Microsoft.Extensions.Hosting;
|
9 |
+
using Microsoft.Extensions.Logging;
|
10 |
+
|
11 |
+
class Program
|
12 |
+
{
|
13 |
+
private static IConfiguration Configuration;
|
14 |
+
private static ILogger<Program> Logger;
|
15 |
+
|
16 |
+
public static async Task Main(string[] args)
|
17 |
+
{
|
18 |
+
// Load environment variables from .env file
|
19 |
+
var builder = new ConfigurationBuilder()
|
20 |
+
.SetBasePath(Directory.GetCurrentDirectory())
|
21 |
+
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
|
22 |
+
.AddEnvironmentVariables();
|
23 |
+
Configuration = builder.Build();
|
24 |
+
|
25 |
+
// Configure logging
|
26 |
+
using var loggerFactory = LoggerFactory.Create(loggingBuilder =>
|
27 |
+
{
|
28 |
+
loggingBuilder.AddConsole();
|
29 |
+
loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
|
30 |
+
});
|
31 |
+
Logger = loggerFactory.CreateLogger<Program>();
|
32 |
+
|
33 |
+
// Setup dependency injection
|
34 |
+
var serviceProvider = new ServiceCollection()
|
35 |
+
.AddSingleton(Configuration)
|
36 |
+
.AddSingleton(Logger)
|
37 |
+
.AddSingleton<SentimentAnalysis>()
|
38 |
+
.AddSingleton<MyBot>()
|
39 |
+
.AddHttpClient()
|
40 |
+
.BuildServiceProvider();
|
41 |
+
|
42 |
+
// Example usage of MyBot class
|
43 |
+
var bot = serviceProvider.GetService<MyBot>();
|
44 |
+
await bot.GenerateResponse("Hello, how are you?", "user123");
|
45 |
+
|
46 |
+
// Start the web host
|
47 |
+
CreateHostBuilder(args).Build().Run();
|
48 |
+
}
|
49 |
+
|
50 |
+
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
51 |
+
Host.CreateDefaultBuilder(args)
|
52 |
+
.ConfigureWebHostDefaults(webBuilder =>
|
53 |
+
{
|
54 |
+
webBuilder.UseStartup<Startup>();
|
55 |
+
});
|
56 |
+
}
|
new_3.txt
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using Microsoft.AspNetCore.Builder;
|
2 |
+
using Microsoft.AspNetCore.Hosting;
|
3 |
+
using Microsoft.Extensions.Configuration;
|
4 |
+
using Microsoft.Extensions.DependencyInjection;
|
5 |
+
using Microsoft.Extensions.Hosting;
|
6 |
+
|
7 |
+
public class Startup
|
8 |
+
{
|
9 |
+
public Startup(IConfiguration configuration)
|
10 |
+
{
|
11 |
+
Configuration = configuration;
|
12 |
+
}
|
13 |
+
|
14 |
+
public IConfiguration Configuration { get; }
|
15 |
+
|
16 |
+
public void ConfigureServices(IServiceCollection services)
|
17 |
+
{
|
18 |
+
services.AddRazorPages();
|
19 |
+
services.AddSingleton<SentimentAnalysis>();
|
20 |
+
services.AddSingleton<MyBot>();
|
21 |
+
services.AddHttpClient();
|
22 |
+
}
|
23 |
+
|
24 |
+
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
25 |
+
{
|
26 |
+
if (env.IsDevelopment())
|
27 |
+
{
|
28 |
+
app.UseDeveloperExceptionPage();
|
29 |
+
}
|
30 |
+
else
|
31 |
+
{
|
32 |
+
app.UseExceptionHandler("/Error");
|
33 |
+
app.UseHsts();
|
34 |
+
}
|
35 |
+
app.UseHttpsRedirection();
|
36 |
+
app.UseStaticFiles();
|
37 |
+
app.UseRouting();
|
38 |
+
app.UseAuthorization();
|
39 |
+
app.UseEndpoints(endpoints =>
|
40 |
+
{
|
41 |
+
endpoints.MapRazorPages();
|
42 |
+
});
|
43 |
+
}
|
44 |
+
}
|
new_4.txt
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@page
|
2 |
+
@model IndexModel
|
3 |
+
@{
|
4 |
+
ViewData["Title"] = "Home page";
|
5 |
+
}
|
6 |
+
<div class="text-center">
|
7 |
+
<h1 class="display-4">Welcome to the Bot Interface</h1>
|
8 |
+
<form method="post">
|
9 |
+
<div class="form-group">
|
10 |
+
<label for="userInput">Enter your message:</label>
|
11 |
+
<input type="text" class="form-control" id="userInput" name="userInput" />
|
12 |
+
</div>
|
13 |
+
<button type="submit" class="btn btn-primary">Send</button>
|
14 |
+
</form>
|
15 |
+
<div>
|
16 |
+
<h2>Response:</h2>
|
17 |
+
<p>@Model.Response</p>
|
18 |
+
</div>
|
19 |
+
</div>
|
new_5.txt
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
using System.Collections.Generic;
|
2 |
+
using Microsoft.ML;
|
3 |
+
|
4 |
+
public class SentimentAnalysis
|
5 |
+
{
|
6 |
+
private readonly MLContext _mlContext;
|
7 |
+
private PredictionEngine<SentimentData, SentimentPrediction> _predictionEngine;
|
8 |
+
|
9 |
+
public SentimentAnalysis()
|
10 |
+
{
|
11 |
+
_mlContext = new MLContext();
|
12 |
+
// Initialize the model here
|
13 |
+
}
|
14 |
+
|
15 |
+
public void UpdateModelWithNewData(IEnumerable<SentimentData> newData)
|
16 |
+
{
|
17 |
+
var trainData = _mlContext.Data.LoadFromEnumerable(newData);
|
18 |
+
var pipeline = _mlContext.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.Text))
|
19 |
+
.Append(_mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: nameof(SentimentData.Label), featureColumnName: "Features"));
|
20 |
+
var model = pipeline.Fit(trainData);
|
21 |
+
_predictionEngine = _mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
|
22 |
+
}
|
23 |
+
|
24 |
+
// Other methods for sentiment analysis
|
25 |
+
}
|
26 |
+
|
27 |
+
public class SentimentData
|
28 |
+
{
|
29 |
+
public string Text { get; set; }
|
30 |
+
public bool Label { get; set; }
|
31 |
+
}
|
32 |
+
|
33 |
+
public class SentimentPrediction
|
34 |
+
{
|
35 |
+
public bool Prediction { get; set; }
|
36 |
+
public float Probability { get; set; }
|
37 |
+
public float Score { get; set; }
|
38 |
+
}
|
quantum_spiderweb.py
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import numpy as np
|
3 |
+
import networkx as nx
|
4 |
+
import random
|
5 |
+
from typing import Dict, Any
|
6 |
+
|
7 |
+
class QuantumSpiderweb:
|
8 |
+
"""
|
9 |
+
Simulates a cognitive spiderweb architecture with dimensions:
|
10 |
+
Ψ (thought), τ (time), χ (speed), Φ (emotion), λ (space)
|
11 |
+
"""
|
12 |
+
def __init__(self, node_count: int = 128):
|
13 |
+
self.graph = nx.Graph()
|
14 |
+
self.dimensions = ['Ψ', 'τ', 'χ', 'Φ', 'λ']
|
15 |
+
self._init_nodes(node_count)
|
16 |
+
self.entangled_state = {}
|
17 |
+
|
18 |
+
def _init_nodes(self, count: int):
|
19 |
+
for i in range(count):
|
20 |
+
node_id = f"QNode_{i}"
|
21 |
+
state = self._generate_state()
|
22 |
+
self.graph.add_node(node_id, state=state)
|
23 |
+
if i > 0:
|
24 |
+
connection = f"QNode_{random.randint(0, i-1)}"
|
25 |
+
self.graph.add_edge(node_id, connection, weight=random.random())
|
26 |
+
|
27 |
+
def _generate_state(self) -> Dict[str, float]:
|
28 |
+
return {dim: np.random.uniform(-1.0, 1.0) for dim in self.dimensions}
|
29 |
+
|
30 |
+
def propagate_thought(self, origin: str, depth: int = 3):
|
31 |
+
"""
|
32 |
+
Traverse the graph from a starting node, simulating pre-cognitive waveform
|
33 |
+
"""
|
34 |
+
visited = set()
|
35 |
+
stack = [(origin, 0)]
|
36 |
+
traversal_output = []
|
37 |
+
|
38 |
+
while stack:
|
39 |
+
node, level = stack.pop()
|
40 |
+
if node in visited or level > depth:
|
41 |
+
continue
|
42 |
+
visited.add(node)
|
43 |
+
state = self.graph.nodes[node]['state']
|
44 |
+
traversal_output.append((node, state))
|
45 |
+
for neighbor in self.graph.neighbors(node):
|
46 |
+
stack.append((neighbor, level + 1))
|
47 |
+
return traversal_output
|
48 |
+
|
49 |
+
def detect_tension(self, node: str) -> float:
|
50 |
+
"""
|
51 |
+
Measures tension (instability) in the node's quantum state
|
52 |
+
"""
|
53 |
+
state = self.graph.nodes[node]['state']
|
54 |
+
return np.std(list(state.values()))
|
55 |
+
|
56 |
+
def collapse_node(self, node: str) -> Dict[str, Any]:
|
57 |
+
"""
|
58 |
+
Collapse superposed thought into deterministic response
|
59 |
+
"""
|
60 |
+
state = self.graph.nodes[node]['state']
|
61 |
+
collapsed = {k: round(v, 2) for k, v in state.items()}
|
62 |
+
self.entangled_state[node] = collapsed
|
63 |
+
return collapsed
|
64 |
+
|
65 |
+
if __name__ == "__main__":
|
66 |
+
web = QuantumSpiderweb()
|
67 |
+
root = "QNode_0"
|
68 |
+
path = web.propagate_thought(root)
|
69 |
+
print("Initial Propagation from:", root)
|
70 |
+
for n, s in path:
|
71 |
+
print(f"{n}:", s)
|
72 |
+
print("\nCollapse Sample Node:")
|
73 |
+
print(web.collapse_node(root))
|
universal_reasoning_clean.py
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
# Cleaned universal reasoning script placeholder.
|
2 |
+
# (See previous code block for full content.)
|