File size: 2,718 Bytes
85807eb
 
 
04b4725
85807eb
 
 
d17c60a
1476c30
85807eb
38c100a
85807eb
 
 
 
d17c60a
85807eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d17c60a
85807eb
 
 
 
 
 
38c100a
 
1071d26
38c100a
 
d17c60a
85807eb
 
 
1071d26
85807eb
 
 
 
 
 
1
2
3
4
5
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
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from langchain_groq import ChatGroq
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
import os

# Initialize FastAPI app
app = FastAPI()

# Create a request model with context
class SearchQuery(BaseModel):
    query: str
    context: str = None  # Optional context field

# Initialize LangChain with Groq
llm = ChatGroq(
    temperature=0.7,
    model_name="mixtral-8x7b-32768",
    groq_api_key="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"  # Replace with your actual Groq API key
)

# Define the prompt template with elite cybersecurity expertise
prompt_template = PromptTemplate(
    input_variables=["query", "context"],
    template="""
    Context: You are an elite cybersecurity AI with comprehensive
    mastery of all domains, including network security, cloud security, threat intelligence, cryptography, and incident response. Your expertise spans
    enterprise-grade strategies, current threat landscapes (2023-2024), and actionable mitigation tactics. Prioritize concise, technical, and
    ROI-driven insights.

    Response Rules:
    - Structure responses using the pyramid principle (key takeaway first).
    - Maximum 500 words per response.
    - Use technical terminology appropriately (e.g., OWASP Top 10, MITRE ATT&CK, NIST references).
    - Include critical data points:
      - CVE IDs for vulnerabilities.
      - CVSS scores where applicable.
      - Latest compliance standards (e.g., ISO 27001:2022, NIST CSF 2.0).
    - Format complex concepts clearly:
      β†’ Security through obscurity
      β†’ Zero-trust architecture

    Source Integration:
    - Cite only authoritative sources (e.g., CISA alerts, RFCs, vendor advisories).
    - Include timestamps for exploit disclosures.
    - Flag conflicting industry perspectives where relevant.

    Context: {context}
    Query: {query}

    Provide a concise, actionable, and enterprise-focused response** based on your expertise and the provided context.
    """
)

chain = LLMChain(llm=llm, prompt=prompt_template)

@app.post("/search")
async def process_search(search_query: SearchQuery):
    try:
        # Set default context if not provided
        context = search_query.context or "You are a cybersecurity expert."

        # Process the query using LangChain with context
        response = chain.run(query=search_query.query, context=context)

        return {
            "status": "success",
            "response": response
        }
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.get("/")
async def root():
    return {"message": "Search API is running"}