Bhanumani12's picture
Update app.py
cbce5ef verified
raw
history blame
4.65 kB
# [All your existing imports]
import random
import gradio as gr
from datetime import datetime
from transformers import pipeline
from simple_salesforce import Salesforce, SalesforceLogin, SFType
# [Your existing mappings, knowledge base, and model loading code remain unchanged]
# ---------- Salesforce Connection Setup ----------
# Replace these with your actual Salesforce credentials or use environment variables for security
SF_USERNAME = "your_username@example.com"
SF_PASSWORD = "your_password"
SF_SECURITY_TOKEN = "your_security_token"
try:
session_id, instance = SalesforceLogin(
username=SF_USERNAME,
password=SF_PASSWORD,
security_token=SF_SECURITY_TOKEN
)
sf = Salesforce(instance=instance, session_id=session_id)
print("βœ… Connected to Salesforce successfully")
except Exception as e:
sf = None
print(f"❌ Failed to connect to Salesforce: {e}")
# ---------- Function to Create Salesforce Record ----------
def create_salesforce_record(object_type, field_name, field_value):
if not sf:
return "Salesforce connection not established."
try:
sobject = SFType(object_type, sf.session_id, sf.sf_instance)
result = sobject.create({field_name: field_value})
if result.get("success"):
return f"βœ… Record created successfully in {object_type} with ID: {result['id']}"
else:
return f"❌ Failed to create record: {result}"
except Exception as e:
return f"⚠️ Error: {str(e)}"
# [Your existing functions: analyze_code, validate_metadata, salesforce_chatbot, etc. remain unchanged]
# ---------- Gradio UI ----------
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("# πŸ€– Advanced Salesforce AI Code Review & Chatbot")
# Tab 1: Code Review
with gr.Tab("Code Review"):
code_input = gr.Textbox(label="Apex / LWC Code", lines=8, placeholder="Enter your Apex or LWC code here")
issue_type = gr.Textbox(label="Issue Type")
suggestion = gr.Textbox(label="AI Suggestion")
severity = gr.Textbox(label="Severity")
code_button = gr.Button("Analyze Code")
code_button.click(analyze_code, inputs=code_input, outputs=[issue_type, suggestion, severity])
# Tab 2: Metadata Validation
with gr.Tab("Metadata Validation"):
metadata_input = gr.Textbox(label="Metadata XML", lines=8, placeholder="Enter your metadata XML here")
mtype = gr.Textbox(label="Type")
issue = gr.Textbox(label="Issue")
recommendation = gr.Textbox(label="Recommendation")
metadata_button = gr.Button("Validate Metadata")
metadata_button.click(validate_metadata, inputs=metadata_input, outputs=[mtype, issue, recommendation])
# Tab 3: Salesforce Chatbot
with gr.Tab("Salesforce Chatbot"):
gr.Markdown("### Ask a Salesforce Question\nGet expert answers on Apex, SOQL, LWC, and more!")
chatbot_output = gr.Chatbot(label="Conversation History", height=400)
query_input = gr.Textbox(label="Your Question", placeholder="e.g., How do I bulkify an Apex trigger?")
with gr.Row():
chatbot_button = gr.Button("Ask")
clear_button = gr.Button("Clear Chat")
chat_state = gr.State(value=[])
def update_chatbot(query, chat_history):
if not query.strip():
return chat_history, "Please enter a valid question."
response = salesforce_chatbot(query, chat_history)
chat_history.append((query, response))
return chat_history, ""
def clear_chat():
global conversation_history
conversation_history = []
return [], ""
chatbot_button.click(fn=update_chatbot, inputs=[query_input, chat_state], outputs=[chatbot_output, query_input])
clear_button.click(fn=clear_chat, inputs=None, outputs=[chatbot_output, query_input])
# Tab 4: Create Salesforce Record
with gr.Tab("Create Salesforce Record"):
gr.Markdown("### πŸ“‡ Create a New Salesforce Record")
object_type = gr.Textbox(label="Salesforce Object API Name", placeholder="e.g., Account")
field_name = gr.Textbox(label="Field API Name", placeholder="e.g., Name")
field_value = gr.Textbox(label="Field Value", placeholder="e.g., Test Company")
create_button = gr.Button("Create Record")
record_result = gr.Textbox(label="Result")
create_button.click(create_salesforce_record, inputs=[object_type, field_name, field_value], outputs=record_result)
# ---------- Start UI ----------
if __name__ == "__main__":
demo.launch()