Spaces:
Sleeping
Sleeping
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.") |