Spaces:
Running
on
Zero
Running
on
Zero
import shutil | |
import gradio as gr | |
from mysite.utilities import chat_with_interpreter, completion, process_file | |
from interpreter import interpreter | |
import mysite.interpreter_config # インポートするだけで設定が適用されます | |
import importlib | |
import os | |
import pkgutil | |
from routers.chat.chat import demo44 as demo4 | |
def include_gradio_interfaces(): | |
package_dir = "/home/user/app/routers" | |
gradio_interfaces = [] | |
gradio_names = set() | |
for module_info in pkgutil.walk_packages([package_dir], "routers."): | |
sub_module_name = module_info.name | |
try: | |
print(f"Trying to import {sub_module_name}") | |
module = importlib.import_module(sub_module_name) | |
if hasattr(module, "gradio_interface"): | |
print(f"Found gradio_interface in {sub_module_name}") | |
interface_name = module_info.name.split(".")[-1] | |
if interface_name not in gradio_names: | |
gradio_interfaces.append(module.gradio_interface) | |
gradio_names.add(interface_name) | |
else: | |
unique_name = f"{interface_name}_{len(gradio_names)}" | |
gradio_interfaces.append(module.gradio_interface) | |
gradio_names.add(unique_name) | |
except ModuleNotFoundError: | |
print(f"ModuleNotFoundError: {sub_module_name}") | |
pass | |
except Exception as e: | |
print(f"Failed to import {sub_module_name}: {e}") | |
print(f"Collected Gradio Interfaces: {gradio_names}") | |
return gradio_interfaces, list(gradio_names) | |
import os | |
import gradio as gr | |
def list_files_in_directory(directory): | |
tree = [] | |
for root, dirs, files in os.walk(directory): | |
path = root.split(os.sep) | |
for dir_name in dirs: | |
tree.append((os.path.join(root, dir_name), '/'.join(path + [dir_name]))) | |
for file_name in files: | |
tree.append((os.path.join(root, file_name), '/'.join(path + [file_name]))) | |
return tree | |
def read_file(file_path): | |
try: | |
with open(file_path, 'r', encoding='utf-8') as file: | |
return file.read() | |
except UnicodeDecodeError: | |
with open(file_path, 'rb') as file: | |
content = file.read() | |
try: | |
return content.decode('utf-8') | |
except UnicodeDecodeError: | |
try: | |
return content.decode('latin-1') | |
except UnicodeDecodeError: | |
return "Cannot decode file content with utf-8 or latin-1 encoding." | |
def save_file(file_path, content): | |
with open(file_path, 'w', encoding='utf-8') as file: | |
file.write(content) | |
return "File saved successfully" | |
def on_file_select(selected_file): | |
if os.path.isfile(selected_file): | |
return read_file(selected_file) | |
return "" | |
def build_interface(base_directory): | |
file_list = list_files_in_directory(base_directory) | |
file_display = [f[1] for f in file_list] | |
file_paths = {f[1]: f[0] for f in file_list} | |
with gr.Blocks() as demo: | |
gr.Markdown("## File Explorer and Editor") | |
file_dropdown = gr.Dropdown(label="Select a file or folder", choices=file_display) | |
file_editor = gr.Textbox(label="File Editor", lines=20) | |
save_button = gr.Button("Save File") | |
def update_editor(selected_display): | |
selected_file = file_paths.get(selected_display, "") | |
return on_file_select(selected_file) | |
def on_edit_button_click(selected_display, new_content): | |
selected_file = file_paths.get(selected_display, "") | |
if os.path.isfile(selected_file): | |
return save_file(selected_file, new_content) | |
return "File not found" | |
file_dropdown.change(fn=update_editor, inputs=file_dropdown, outputs=file_editor) | |
save_button.click(fn=on_edit_button_click, inputs=[file_dropdown, file_editor], outputs=None) | |
return demo | |
#if __name__ == "__main__": | |
base_directory = "/home/user/app/routers" # Here you can specify any directory you want to explore | |
demo = build_interface(base_directory) | |
#demo.launch() | |
def setup_gradio_interfaces(): | |
chat_interface = gr.ChatInterface( | |
fn=chat_with_interpreter, | |
examples=["サンプルHTMLの作成", "google spreadの読み込み作成", "merhaba"], | |
title="Auto Program", | |
css=".chat-container { height: 1500px; }", | |
) | |
chat_interface2 = gr.ChatInterface( | |
fn=chat_with_interpreter, | |
examples=["こんにちは", "どうしたの?"], | |
title="Auto Program 2", | |
) | |
chat_interface2.queue() | |
democs = gr.Interface( | |
fn=process_file, | |
inputs=[ | |
"file", | |
gr.Textbox(label="Additional Notes", lines=10), | |
gr.Textbox(label="Folder Name"), | |
], | |
outputs="text", | |
) | |
from routers.postg.gradio_app import crud_interface | |
default_interfaces = [demo4,democs,crud_interface()]#,demo] | |
default_names = ["OpenInterpreter","仕様書から作成","Database",]#"demo"] | |
gradio_interfaces, gradio_names = include_gradio_interfaces() | |
all_interfaces = default_interfaces + gradio_interfaces | |
all_names = default_names + gradio_names | |
tabs = gr.TabbedInterface(all_interfaces, all_names) | |
tabs.queue() | |
return tabs | |