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_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 | |
| 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") | |
| 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.") |