anasmkh's picture
Update app.py
42873cc verified
raw
history blame
2.66 kB
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import Settings
import os
import json
import streamlit as st
import requests
openai_api_key = os.getenv('openai_api')
openai_api_key = openai_api_key
Settings.llm = OpenAI(model="gpt-3.5-turbo", temperature=0.4)
Settings.embed_model = OpenAIEmbedding(model="text-embedding-ada-002")
from opensearchpy import OpenSearch, RequestsHttpConnection
auth = ('admin','klbvrR4AlGNMaQ')
host = '10.11.10.111'
port = 32000
client = OpenSearch(
hosts = [{'host': host, 'port': port}],
http_auth = auth,
use_ssl = True,
verify_certs = False
)
def generate_opensearch_query(user_input):
prompt = f"""
You are an assistant trained to translate natural language requests into OpenSearch queries. Based on the user's request, generate an OpenSearch JSON query.
Examples:
User Input: "Get all documents where the status is active."
Response:
{{
"query": {{
"match": {{
"status": "active"
}}
}}
}}
User Input: "Find records with priority high created in the last 7 days."
Response:
{{
"query": {{
"bool": {{
"must": [
{{ "match": {{ "priority": "high" }} }},
{{ "range": {{ "created_at": {{ "gte": "now-7d/d", "lte": "now" }} }} }}
]
}}
}}
}}
User Input: "Show documents where age is over 30 and sort by created date."
Response:
{{
"query": {{
"range": {{
"age": {{ "gt": 30 }}
}}
}},
"sort": [
{{ "created_date": {{ "order": "asc" }} }}
]
}}
User Input: "{user_input}"
Response:
"""
llm_response = Settings.llm.complete(prompt)
return llm_response
def implement_query(generated_query):
query = json.loads(generated_query.text)
response = client.search(body=query)
return response
st.title("OpenSearch Query Generator")
st.subheader("Enter your natural language query:")
user_input = st.text_area("Enter a Prompt:", height=150)
if st.button("Generate OpenSearch Query"):
if user_input.strip():
generated_query = generate_opensearch_query(user_input)
st.subheader("Generated OpenSearch Query:")
st.json(json.loads(generated_query.text))
try:
response = implement_query(generated_query)
st.subheader("OpenSearch Response:")
st.json(response)
except Exception as e:
st.error(f"Error executing OpenSearch query: {e}")
else:
st.warning("Please enter a valid query.")