From 94d57804d7290eff525d811c7f0c0ecad4adb762 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Tue, 30 Sep 2025 15:27:30 -0700 Subject: [PATCH] more fixes --- arch/tools/cli/config_generator.py | 6 +- .../src/handlers/agent_chat_completions.rs | 4 +- .../src/handlers/agent_selector.rs | 19 +- .../src/handlers/integration_tests.rs | 10 +- .../src/handlers/pipeline_processor.rs | 17 +- crates/common/src/configuration.rs | 5 +- demos/use_cases/rag_agent/arch_config.yaml | 13 +- demos/use_cases/rag_agent/sample_queries.md | 64 +++++ .../src/rag_agent/content_builder_agent.py | 4 +- .../src/rag_agent/response_generator_agent.py | 4 +- .../src/rag_agent/sample_knowledge_base.csv | 257 ++++++++++++++++++ demos/use_cases/rag_agent/test.rest | 4 +- 12 files changed, 360 insertions(+), 47 deletions(-) create mode 100644 demos/use_cases/rag_agent/sample_queries.md create mode 100644 demos/use_cases/rag_agent/src/rag_agent/sample_knowledge_base.csv diff --git a/arch/tools/cli/config_generator.py b/arch/tools/cli/config_generator.py index 647f55ba..a27fc6c6 100644 --- a/arch/tools/cli/config_generator.py +++ b/arch/tools/cli/config_generator.py @@ -91,10 +91,10 @@ def validate_and_render_schema(): # Process agents section and convert to endpoints agents = config_yaml.get("agents", []) for agent in agents: - agent_name = agent.get("name") + agent_id = agent.get("id") agent_endpoint = agent.get("url") - if agent_name and agent_endpoint: + if agent_id and agent_endpoint: urlparse_result = urlparse(agent_endpoint) if urlparse_result.scheme and urlparse_result.hostname: protocol = urlparse_result.scheme @@ -106,7 +106,7 @@ def validate_and_render_schema(): else: port = 443 - endpoints[agent_name] = { + endpoints[agent_id] = { "endpoint": urlparse_result.hostname, "port": port, "protocol": protocol, diff --git a/crates/brightstaff/src/handlers/agent_chat_completions.rs b/crates/brightstaff/src/handlers/agent_chat_completions.rs index 6ef65725..7a577f47 100644 --- a/crates/brightstaff/src/handlers/agent_chat_completions.rs +++ b/crates/brightstaff/src/handlers/agent_chat_completions.rs @@ -102,7 +102,7 @@ async fn handle_agent_chat( .select_agent(&chat_completions_request.messages, &listener, trace_parent) .await?; - debug!("Processing agent pipeline: {}", selected_agent.name); + debug!("Processing agent pipeline: {}", selected_agent.id); // Create agent map for pipeline processing let agent_map = { @@ -122,7 +122,7 @@ async fn handle_agent_chat( .await?; // Get terminal agent and send final response - let terminal_agent_name = selected_agent.agent; + let terminal_agent_name = selected_agent.id; let terminal_agent = agent_map.get(&terminal_agent_name).unwrap(); debug!("Processing terminal agent: {}", terminal_agent_name); diff --git a/crates/brightstaff/src/handlers/agent_selector.rs b/crates/brightstaff/src/handlers/agent_selector.rs index 75c6c1ff..4e338ebc 100644 --- a/crates/brightstaff/src/handlers/agent_selector.rs +++ b/crates/brightstaff/src/handlers/agent_selector.rs @@ -55,7 +55,7 @@ impl AgentSelector { pub fn create_agent_map(&self, agents: &[Agent]) -> HashMap { agents .iter() - .map(|agent| (agent.name.clone(), agent.clone())) + .map(|agent| (agent.id.clone(), agent.clone())) .collect() } @@ -92,7 +92,7 @@ impl AgentSelector { debug!("Determined agent: {}", agent_name); let selected_agent = agents .iter() - .find(|a| a.name == agent_name) + .find(|a| a.id == agent_name) .cloned() .ok_or_else(|| { AgentSelectionError::RoutingError(format!( @@ -123,7 +123,7 @@ impl AgentSelector { .or_else(|| { warn!( "No default agent found, routing request to first agent: {}", - agents[0].name + agents[0].id ); Some(agents[0].clone()) }) @@ -138,9 +138,9 @@ impl AgentSelector { agents .iter() .map(|agent| ModelUsagePreference { - model: agent.name.clone(), + model: agent.id.clone(), routing_preferences: vec![RoutingPreference { - name: agent.name.clone(), + name: agent.id.clone(), description: agent.description.as_ref().unwrap_or(&String::new()).clone(), }], }) @@ -164,8 +164,7 @@ mod tests { fn create_test_agent(name: &str, description: &str, is_default: bool) -> AgentPipeline { AgentPipeline { - name: name.to_string(), - agent: name.to_string(), + id: name.to_string(), description: Some(description.to_string()), default: Some(is_default), filter_chain: vec![name.to_string()], @@ -183,7 +182,7 @@ mod tests { fn create_test_agent_struct(name: &str) -> Agent { Agent { - name: name.to_string(), + id: name.to_string(), kind: Some("test".to_string()), url: "http://localhost:8080".to_string(), } @@ -276,7 +275,7 @@ mod tests { let result = selector.get_default_agent(&agents, "test-listener"); assert!(result.is_ok()); - assert_eq!(result.unwrap().name, "agent2"); + assert_eq!(result.unwrap().id, "agent2"); } #[test] @@ -292,6 +291,6 @@ mod tests { let result = selector.get_default_agent(&agents, "test-listener"); assert!(result.is_ok()); - assert_eq!(result.unwrap().name, "agent1"); + assert_eq!(result.unwrap().id, "agent1"); } } diff --git a/crates/brightstaff/src/handlers/integration_tests.rs b/crates/brightstaff/src/handlers/integration_tests.rs index d5a21555..301e69f7 100644 --- a/crates/brightstaff/src/handlers/integration_tests.rs +++ b/crates/brightstaff/src/handlers/integration_tests.rs @@ -47,20 +47,19 @@ mod integration_tests { // Create test data let agents = vec![ Agent { - name: "filter-agent".to_string(), + id: "filter-agent".to_string(), kind: Some("filter".to_string()), url: "http://localhost:8081".to_string(), }, Agent { - name: "terminal-agent".to_string(), + id: "terminal-agent".to_string(), kind: Some("terminal".to_string()), url: "http://localhost:8082".to_string(), }, ]; let agent_pipeline = AgentPipeline { - name: "test-pipeline".to_string(), - agent: "terminal-agent".to_string(), + id: "terminal-agent".to_string(), filter_chain: vec!["filter-agent".to_string(), "terminal-agent".to_string()], description: Some("Test pipeline".to_string()), default: Some(true), @@ -100,8 +99,7 @@ mod integration_tests { // Create a pipeline with empty filter chain to avoid network calls let test_pipeline = AgentPipeline { - name: "test-pipeline".to_string(), - agent: "terminal-agent".to_string(), + id: "terminal-agent".to_string(), filter_chain: vec![], // Empty filter chain - no network calls needed description: None, default: None, diff --git a/crates/brightstaff/src/handlers/pipeline_processor.rs b/crates/brightstaff/src/handlers/pipeline_processor.rs index 8c9063ac..4f87d95e 100644 --- a/crates/brightstaff/src/handlers/pipeline_processor.rs +++ b/crates/brightstaff/src/handlers/pipeline_processor.rs @@ -99,14 +99,14 @@ impl PipelineProcessor { request.messages = messages.to_vec(); let request_body = serde_json::to_string(&request)?; - debug!("Sending request to agent {}", agent.name); + debug!("Sending request to agent {}", agent.id); let mut agent_headers = request_headers.clone(); agent_headers.remove(hyper::header::CONTENT_LENGTH); agent_headers.insert( ARCH_UPSTREAM_HOST_HEADER, - hyper::header::HeaderValue::from_str(&agent.name) - .map_err(|_| PipelineError::AgentNotFound(agent.name.clone()))?, + hyper::header::HeaderValue::from_str(&agent.id) + .map_err(|_| PipelineError::AgentNotFound(agent.id.clone()))?, ); agent_headers.insert( @@ -134,7 +134,7 @@ impl PipelineProcessor { .and_then(|choice| choice.get("message")) .and_then(|message| message.get("content")) .and_then(|content| content.as_str()) - .ok_or_else(|| PipelineError::NoContentInResponse(agent.name.clone()))? + .ok_or_else(|| PipelineError::NoContentInResponse(agent.id.clone()))? .to_string(); Ok(content) @@ -152,14 +152,14 @@ impl PipelineProcessor { request.messages = messages.to_vec(); let request_body = serde_json::to_string(&request)?; - debug!("Sending request to terminal agent {}", terminal_agent.name); + debug!("Sending request to terminal agent {}", terminal_agent.id); let mut agent_headers = request_headers.clone(); agent_headers.remove(hyper::header::CONTENT_LENGTH); agent_headers.insert( ARCH_UPSTREAM_HOST_HEADER, - hyper::header::HeaderValue::from_str(&terminal_agent.name) - .map_err(|_| PipelineError::AgentNotFound(terminal_agent.name.clone()))?, + hyper::header::HeaderValue::from_str(&terminal_agent.id) + .map_err(|_| PipelineError::AgentNotFound(terminal_agent.id.clone()))?, ); agent_headers.insert( @@ -197,8 +197,7 @@ mod tests { fn create_test_pipeline(agents: Vec<&str>) -> AgentPipeline { AgentPipeline { - name: "test-pipeline".to_string(), - agent: "test-agent".to_string(), + id: "test-agent".to_string(), filter_chain: agents.iter().map(|s| s.to_string()).collect(), description: None, default: None, diff --git a/crates/common/src/configuration.rs b/crates/common/src/configuration.rs index d800834f..57f2e09c 100644 --- a/crates/common/src/configuration.rs +++ b/crates/common/src/configuration.rs @@ -20,15 +20,14 @@ pub struct ModelAlias { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Agent { - pub name: String, + pub id: String, pub kind: Option, pub url: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AgentPipeline { - pub name: String, - pub agent: String, + pub id: String, pub default: Option, pub description: Option, pub filter_chain: Vec, diff --git a/demos/use_cases/rag_agent/arch_config.yaml b/demos/use_cases/rag_agent/arch_config.yaml index 4f52324f..cff0a7c0 100644 --- a/demos/use_cases/rag_agent/arch_config.yaml +++ b/demos/use_cases/rag_agent/arch_config.yaml @@ -1,15 +1,15 @@ version: v0.3.0 agents: - - name: query_rewriter + - id: query_rewriter url: http://host.docker.internal:10500/v1/chat/completions - - name: context_builder + - id: context_builder url: http://host.docker.internal:10501/v1/chat/completions - - name: rag_agent + - id: rag_agent url: http://host.docker.internal:10502/v1/chat/completions - - name: research_agent + - id: research_agent url: http://host.docker.internal:10503/v1/chat/completions - - name: weather_forecast_agent + - id: weather_forecast_agent url: http://host.docker.internal:10504/process model_providers: @@ -33,8 +33,7 @@ listeners: port: 8001 router: arch_agent_router agents: - - name: rag_agent - agent: rag_agent + - id: rag_agent description: virtual assistant for device contracts for simple queries filter_chain: - query_rewriter diff --git a/demos/use_cases/rag_agent/sample_queries.md b/demos/use_cases/rag_agent/sample_queries.md new file mode 100644 index 00000000..ba98cdfd --- /dev/null +++ b/demos/use_cases/rag_agent/sample_queries.md @@ -0,0 +1,64 @@ +# Sample Queries for Knowledge Base RAG Agent + +## Service Level Agreement Queries +- What is the guaranteed uptime percentage for TechCorp's cloud services? +- What remedies are available if the API response time exceeds the agreed threshold? +- How quickly must TechCorp respond to critical support issues? +- What monitoring and reporting requirements are specified in the SLA? +- When was the TechCorp service agreement signed and by whom? + +## Privacy Policy Queries +- What encryption methods does DataSecure use to protect data? +- How long does DataSecure retain personal data after account deletion? +- What rights do users have regarding their personal information? +- Can DataSecure sell user data to third parties for marketing? +- Who should be contacted for privacy-related concerns at DataSecure? + +## Supply Chain Agreement Queries +- What types of automotive components does PrecisionParts supply? +- What are the payment terms and volume discount structure? +- What quality standards must the supplied components meet? +- What are the penalties for late delivery? +- What insurance coverage requirements apply to the supplier? + +## Student Data Management Queries +- What federal laws must EduTech comply with regarding student data? +- What security measures are in place to protect student information? +- How long are student records retained after graduation? +- What consent is required for students under 13 years old? +- Who can access student educational records? + +## Investment Advisory Queries +- What is FinanceFirst's management fee structure? +- What types of investments are included in the advisory services? +- What regulatory body oversees FinanceFirst Advisors? +- How often are portfolio reviews conducted? +- What are the client's responsibilities under this agreement? + +## Healthcare Standards Queries +- What is the target response time for emergency code teams? +- What hand hygiene compliance rate is required? +- How quickly must medical records be completed after patient encounters? +- What continuing education requirements apply to nursing staff? +- What patient safety protocols are mandatory upon admission? + +## Cross-Document Queries +- Which agreements include confidentiality or data protection provisions? +- What are the common termination notice periods across different contract types? +- Which documents specify insurance or liability coverage requirements? +- What compliance and regulatory requirements are mentioned across agreements? +- Which contracts include performance metrics or service level commitments? + +## Complex Analysis Queries +- Compare the data retention policies across the privacy policy and student data management documents. +- What are the different approaches to risk management across the supply chain and investment advisory agreements? +- How do the security measures in the healthcare standards compare to those in the privacy policy? +- Which agreements provide the most detailed compliance and regulatory frameworks? +- What common themes exist in the quality assurance requirements across different industries? + +## Document-Specific Detail Queries +- List all the specific percentages, timeframes, and numerical requirements mentioned in the SLA. +- What are all the contact persons and their roles mentioned across the documents? +- Identify all the compliance standards and certifications referenced in the supply chain agreement. +- What are the specific consequences or penalties mentioned for non-compliance across agreements? +- List all the third-party systems, tools, or services mentioned in the documents. diff --git a/demos/use_cases/rag_agent/src/rag_agent/content_builder_agent.py b/demos/use_cases/rag_agent/src/rag_agent/content_builder_agent.py index 6db2319f..a9ec53f4 100644 --- a/demos/use_cases/rag_agent/src/rag_agent/content_builder_agent.py +++ b/demos/use_cases/rag_agent/src/rag_agent/content_builder_agent.py @@ -32,12 +32,12 @@ knowledge_base = [] def load_knowledge_base(): - """Load the basis_of_truth.csv file into memory on startup.""" + """Load the sample_knowledge_base.csv file into memory on startup.""" global knowledge_base # Get the path to the CSV file relative to this script current_dir = Path(__file__).parent - csv_path = current_dir / "basis_of_truth.csv" + csv_path = current_dir / "sample_knowledge_base.csv" print(f"Loading knowledge base from {csv_path}") diff --git a/demos/use_cases/rag_agent/src/rag_agent/response_generator_agent.py b/demos/use_cases/rag_agent/src/rag_agent/response_generator_agent.py index 6af50951..c3d1ef53 100644 --- a/demos/use_cases/rag_agent/src/rag_agent/response_generator_agent.py +++ b/demos/use_cases/rag_agent/src/rag_agent/response_generator_agent.py @@ -209,8 +209,6 @@ async def non_streaming_chat_completions( generated_response = response.choices[0].message.content.strip() logger.info(f"Response generated successfully") - updated_history = [{"role": "assistant", "content": generated_response}] - return ChatCompletionResponse( id=f"chatcmpl-{uuid.uuid4().hex[:8]}", created=int(time.time()), @@ -220,7 +218,7 @@ async def non_streaming_chat_completions( "index": 0, "message": { "role": "assistant", - "content": json.dumps(updated_history), + "content": generated_response, }, "finish_reason": "stop", } diff --git a/demos/use_cases/rag_agent/src/rag_agent/sample_knowledge_base.csv b/demos/use_cases/rag_agent/src/rag_agent/sample_knowledge_base.csv new file mode 100644 index 00000000..b9e6e8f0 --- /dev/null +++ b/demos/use_cases/rag_agent/src/rag_agent/sample_knowledge_base.csv @@ -0,0 +1,257 @@ +path,content +TechCorp_CloudServices_SLA_Agreement_2024,"SERVICE LEVEL AGREEMENT +This Service Level Agreement (""SLA"") is entered into on March 15, 2024, between TechCorp Solutions Inc., a Delaware corporation (""Provider""), and CloudFirst Enterprises LLC (""Customer""). + +DEFINITIONS +Service Availability: The percentage of time during which the cloud services are operational and accessible. +Downtime: Any period when the services are unavailable or inaccessible to Customer. +Response Time: The time between service request submission and initial response from Provider. + +SERVICE COMMITMENTS +Provider guarantees 99.9% uptime for all cloud infrastructure services during any calendar month. +Average response time for API calls shall not exceed 200 milliseconds under normal operating conditions. +Customer support response times: Critical issues within 1 hour, Standard issues within 4 hours. + +REMEDIES +For each full percentage point below 99.9% availability, Customer receives 10% credit on monthly fees. +If response times exceed 500ms for more than 5 minutes in any hour, Customer receives 5% monthly credit. + +MONITORING AND REPORTING +Provider will maintain real-time monitoring systems and provide monthly performance reports. +All metrics will be measured from Provider's monitoring systems located in primary data centers. + +This SLA remains in effect for the duration of the underlying service agreement. + +Executed by: +TechCorp Solutions Inc. +Sarah Mitchell, VP Operations +Date: March 15, 2024 + +CloudFirst Enterprises LLC +Robert Chen, CTO +Date: March 16, 2024" + +DataSecure_Privacy_Policy_v3.2,"PRIVACY POLICY +DataSecure Analytics, Inc. (""Company"") Privacy Policy +Effective Date: January 1, 2024 +Last Updated: February 28, 2024 + +INFORMATION COLLECTION +We collect information you provide directly, such as account details, usage preferences, and communication records. +Automatically collected data includes IP addresses, browser types, device information, and service interaction logs. +Third-party integrations may provide additional user behavior and demographic information with consent. + +DATA USAGE +Personal information is used to provide services, improve user experience, and communicate service updates. +Aggregated, non-identifiable data may be used for analytics, research, and service enhancement. +We do not sell personal information to third parties for marketing purposes. + +DATA PROTECTION +All data is encrypted in transit using TLS 1.3 and at rest using AES-256 encryption. +Access controls limit data access to authorized personnel only on a need-to-know basis. +Regular security audits and penetration testing ensure ongoing protection measures. + +DATA RETENTION +Personal data is retained for the duration of active service plus 24 months. +Logs and analytics data are retained for 12 months unless legally required otherwise. +Upon account deletion, personal data is permanently removed within 30 days. + +USER RIGHTS +Users may request access to, correction of, or deletion of their personal information. +Data portability requests will be fulfilled in standard formats within 30 days. +Marketing communications can be opted out of at any time. + +CONTACT +For privacy concerns, contact: privacy@datasecure.com +Data Protection Officer: Jennifer Walsh, jwalsh@datasecure.com" + +GlobalManufacturing_SupplyChain_Contract_Q2_2024,"SUPPLY CHAIN AGREEMENT +This Supply Chain Agreement is entered into between GlobalManufacturing Corp (""Buyer"") and PrecisionParts Ltd (""Supplier"") effective April 1, 2024. + +SCOPE OF SERVICES +Supplier will provide automotive components including brake assemblies, suspension parts, and electrical harnesses. +All products must meet ISO 9001 quality standards and automotive industry specifications. +Delivery schedule: Weekly shipments every Tuesday, with 48-hour advance shipping notifications. + +PRICING AND PAYMENT +Component pricing is fixed for initial 6-month term with quarterly price review thereafter. +Payment terms: Net 45 days from invoice date via electronic transfer. +Volume discounts apply: 5% for orders exceeding 10,000 units per month, 8% for orders exceeding 25,000 units. + +QUALITY REQUIREMENTS +All components must pass incoming inspection with less than 0.1% defect rate. +Supplier maintains quality certifications including IATF 16949 and environmental compliance. +Batch tracking and traceability required for all delivered components. + +LOGISTICS AND DELIVERY +Supplier responsible for packaging, labeling, and delivery to Buyer's distribution centers. +Delivery windows: 8 AM - 4 PM, Monday through Friday, with advance appointment scheduling. +Late delivery penalties: 2% of shipment value for each day beyond scheduled delivery. + +RISK MANAGEMENT +Supplier maintains business continuity plans and alternative sourcing strategies. +Force majeure events must be reported within 24 hours with mitigation plans. +Insurance requirements: $5M general liability, $2M product liability coverage. + +INTELLECTUAL PROPERTY +All custom tooling and specifications remain property of Buyer. +Supplier grants license to use necessary patents for component manufacturing. + +This agreement shall remain in effect for 24 months with automatic renewal unless terminated. + +GlobalManufacturing Corp +Michael Rodriguez, Supply Chain Director +Date: April 1, 2024 + +PrecisionParts Ltd +Amanda Foster, VP Sales +Date: April 2, 2024" + +EduTech_StudentData_Management_Policy_2024,"STUDENT DATA MANAGEMENT POLICY +EduTech Learning Platform - Data Management and Protection Policy +Document Version: 2.1 +Effective Date: August 15, 2024 + +SCOPE AND PURPOSE +This policy governs the collection, use, storage, and protection of student educational records and personal information. +Applies to all employees, contractors, and third-party service providers accessing student data. +Compliance with FERPA, COPPA, and state student privacy laws is mandatory. + +DATA CLASSIFICATION +Educational Records: Grades, attendance, assignments, and academic progress information. +Personal Information: Names, addresses, contact details, and demographic information. +Behavioral Data: Learning patterns, platform usage, and engagement metrics. + +COLLECTION PRINCIPLES +Data collection is limited to educational purposes and service improvement only. +Parental consent required for students under 13 years of age. +Students and parents have right to review and request corrections to educational records. + +ACCESS CONTROLS +Role-based access ensures personnel see only data necessary for their functions. +Multi-factor authentication required for all system access. +Access logs maintained and reviewed monthly for unauthorized activity. + +DATA SHARING +Educational records shared only with authorized school personnel and parents/students. +No data sharing with third parties for commercial purposes without explicit consent. +Research data must be de-identified and aggregated before external sharing. + +SECURITY MEASURES +Data encrypted using industry-standard protocols during transmission and storage. +Regular security assessments and vulnerability testing conducted quarterly. +Incident response plan includes notification procedures for data breaches. + +RETENTION AND DISPOSAL +Student records retained according to school district policies, typically 5-7 years post-graduation. +Inactive accounts and associated data purged after 2 years of non-use. +Secure data destruction protocols ensure complete removal of sensitive information. + +COMPLIANCE MONITORING +Annual privacy training required for all staff handling student data. +Regular audits ensure ongoing compliance with applicable privacy regulations. +Privacy impact assessments conducted for new features or data uses. + +Contact: Dr. Lisa Thompson, Chief Privacy Officer +Email: privacy@edutech-learning.com +Phone: (555) 123-4567" + +FinanceFirst_Investment_Advisory_Agreement_2024,"INVESTMENT ADVISORY AGREEMENT +This Investment Advisory Agreement is entered into between FinanceFirst Advisors LLC (""Advisor"") and Madison Investment Group (""Client"") on May 20, 2024. + +ADVISORY SERVICES +Advisor will provide comprehensive investment management and financial planning services. +Services include portfolio construction, asset allocation, risk assessment, and performance monitoring. +Regular portfolio reviews conducted quarterly with detailed performance reporting. + +INVESTMENT AUTHORITY +Client grants Advisor discretionary authority to make investment decisions within agreed parameters. +Investment universe includes stocks, bonds, ETFs, mutual funds, and alternative investments as appropriate. +All trades executed through qualified broker-dealers with best execution practices. + +FEE STRUCTURE +Management fee: 1.25% annually on assets under management, calculated and billed quarterly. +Performance fee: 15% of returns exceeding S&P 500 benchmark, calculated annually. +Additional fees may apply for specialized services such as tax planning or estate planning. + +CLIENT RESPONSIBILITIES +Client must provide accurate financial information and promptly communicate changes in circumstances. +Investment objectives and risk tolerance should be reviewed and updated annually. +Client responsible for reviewing and approving investment policy statement. + +RISK DISCLOSURE +All investments carry risk of loss, and past performance does not guarantee future results. +Diversification does not ensure profit or protect against loss in declining markets. +Alternative investments may have limited liquidity and higher volatility. + +REGULATORY COMPLIANCE +Advisor is registered with the Securities and Exchange Commission as an investment advisor. +All activities conducted in accordance with Investment Advisers Act of 1940 and applicable regulations. +Form ADV Part 2 brochure provided annually with material updates. + +CONFIDENTIALITY +All client information treated as confidential and shared only as necessary for service provision. +Third-party service providers bound by confidentiality agreements. +Client data protected through secure systems and access controls. + +TERMINATION +Either party may terminate agreement with 30 days written notice. +Upon termination, Advisor will assist with orderly transfer of assets to new custodian or advisor. +Final fee calculation prorated to date of termination. + +FinanceFirst Advisors LLC +Thomas Anderson, Managing Partner +Date: May 20, 2024 + +Madison Investment Group +Rebecca Martinez, Chief Investment Officer +Date: May 21, 2024" + +HealthSystem_PatientCare_Standards_2024,"PATIENT CARE STANDARDS AND PROTOCOLS +Metropolitan Health System - Clinical Care Standards +Document ID: MHS-PCS-2024-001 +Effective Date: June 1, 2024 + +PATIENT SAFETY PROTOCOLS +All patients must have proper identification verification using two unique identifiers. +Medication administration requires independent double-check for high-risk medications. +Fall risk assessments completed within 4 hours of admission with appropriate interventions. + +CLINICAL DOCUMENTATION +Medical records must be completed within 24 hours of patient encounter. +All entries require electronic signature with timestamp and provider identification. +Critical values and abnormal results must be communicated and documented immediately. + +INFECTION CONTROL +Hand hygiene compliance monitored with target rate of 95% or higher. +Personal protective equipment used according to transmission-based precautions. +Isolation procedures implemented within 2 hours of identification of infectious conditions. + +EMERGENCY RESPONSE +Code team response time target: 3 minutes from activation to arrival. +Crash cart and emergency equipment checks performed daily and documented. +All staff required to maintain current CPR and emergency response certifications. + +PATIENT COMMUNICATION +Patient rights and responsibilities communicated upon admission. +Informed consent obtained and documented prior to procedures and treatments. +Family involvement encouraged with respect for patient privacy preferences. + +QUALITY MEASURES +Patient satisfaction scores monitored monthly with target of 4.5/5.0 or higher. +Medication error rates tracked with goal of less than 1 per 1000 patient days. +Hospital-acquired infection rates measured and benchmarked against national standards. + +STAFF COMPETENCY +Annual competency assessments required for all clinical staff. +Continuing education requirements: 24 hours annually for nurses, 40 hours for physicians. +Specialty certifications maintained according to department and role requirements. + +TECHNOLOGY STANDARDS +Electronic health record system used for all patient documentation. +Telemedicine capabilities available for remote consultations and monitoring. +Clinical decision support tools integrated to assist with diagnosis and treatment decisions. + +Contact: Dr. Patricia Williams, Chief Medical Officer +Email: pwilliams@metrohealthsystem.org +Phone: (555) 987-6543" diff --git a/demos/use_cases/rag_agent/test.rest b/demos/use_cases/rag_agent/test.rest index df8e4f7b..ba6362ec 100644 --- a/demos/use_cases/rag_agent/test.rest +++ b/demos/use_cases/rag_agent/test.rest @@ -46,10 +46,10 @@ Content-Type: application/json "messages": [ { "role": "user", - "content": "what is the effective date of the master agreement for arcadyan" + "content": "What is the guaranteed uptime percentage for TechCorp's cloud services?" } ], - "stream": true + "stream": false } ### models_listeners test