import json
import logging
import os
import re
import string
import html
import gradio as gr
import nh3
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q
# es = Elasticsearch(os.environ.get("host"), timeout=100, http_compress=True, maxsize=1000)
es = Elasticsearch(os.environ.get("host"), http_compress=True, timeout=200)
def mark_tokens_bold(text, query):
if query.startswith('"') and query.endswith('"'):
tokens = query[1:-1]
else:
tokens = query.split(" ")
for token in tokens:
pattern = re.escape(token) #r"\b" + re.escape(token) + r"\b"
text = re.sub(pattern, "" + token + "", text)
return text
def process_results(results, query):
if len(results) == 0:
return """
No results retrieved.
Source: {} | Language: \ {} | License: {}
StarCoder: Dataset Search 🔍
When using StarCoder to generate code, it might produce exact copies of code in the pretraining dataset. \ In that case, the code license might have requirements to comply with. With this search tool, our aim is to help in identifying if the code belongs to an existing repository. For exact matches, enclose your query in double quotes.""" theme = gr.themes.Monochrome( primary_hue="indigo", secondary_hue="blue", neutral_hue="slate", radius_size=gr.themes.sizes.radius_sm, font=[ gr.themes.GoogleFont("Open Sans"), "ui-sans-serif", "system-ui", "sans-serif", ], ) css = ".generating {visibility: hidden}" monospace_css = """ #q-input textarea { font-family: monospace, 'Consolas', Courier, monospace; } """ css = monospace_css + ".gradio-container {color: black}" if __name__ == "__main__": demo = gr.Blocks( theme=theme, css=css, ) with demo: with gr.Row(): gr.Markdown(value=description) with gr.Row(): query = gr.Textbox(lines=5, placeholder="Type your query here...", label="Query", elem_id="q-input") with gr.Row(): k = gr.Slider(1, 100, value=10, step=1, label="Max Results") with gr.Row(): submit_btn = gr.Button("Submit") with gr.Row(): results = gr.HTML(label="Results", value="") def submit(query, k, lang="en"): query = query.strip() if query is None or query == "": return "", "" return { results: search(query, k), } query.submit(fn=submit, inputs=[query, k], outputs=[results]) submit_btn.click(submit, inputs=[query, k], outputs=[results]) demo.launch(enable_queue=True, debug=True)