Spaces:
Running
on
L40S
Running
on
L40S
Update app.py
Browse files
app.py
CHANGED
@@ -1,29 +1,15 @@
|
|
1 |
import os,sys
|
|
|
|
|
2 |
|
3 |
# install required packages
|
4 |
-
os.system('pip install -q python-dotenv') # python-dotenv 설치 추가
|
5 |
-
os.system('pip install -q transformers')
|
6 |
os.system('pip install -q plotly')
|
7 |
os.system('pip install -q matplotlib')
|
8 |
os.system('pip install dgl==1.0.2+cu116 -f https://data.dgl.ai/wheels/cu116/repo.html')
|
9 |
os.environ["DGLBACKEND"] = "pytorch"
|
10 |
print('Modules installed')
|
11 |
|
12 |
-
from huggingface_hub import HfApi
|
13 |
-
from dotenv import load_dotenv
|
14 |
-
|
15 |
-
# 환경 변수 로드 및 토큰 설정
|
16 |
-
load_dotenv()
|
17 |
-
HF_TOKEN = os.getenv("HF_TOKEN")
|
18 |
-
if not HF_TOKEN:
|
19 |
-
raise ValueError("HF_TOKEN not found in environment variables. Please set it in .env file")
|
20 |
-
|
21 |
-
# Hugging Face API 설정
|
22 |
-
os.environ["HUGGINGFACE_TOKEN"] = HF_TOKEN
|
23 |
-
os.environ["TRANSFORMERS_CACHE"] = "/tmp/transformers_cache"
|
24 |
-
|
25 |
# 필수 라이브러리 임포트
|
26 |
-
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
|
27 |
from datasets import load_dataset
|
28 |
import plotly.graph_objects as go
|
29 |
import numpy as np
|
@@ -38,18 +24,52 @@ from utils.parsers_inference import parse_pdb
|
|
38 |
from model.util import writepdb
|
39 |
from utils.inpainting_util import *
|
40 |
|
41 |
-
#
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
|
|
49 |
|
50 |
# 데이터셋 로드
|
51 |
ds = load_dataset("lamm-mit/protein_secondary_structure_from_PDB",
|
52 |
-
token=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
# 챗봇 및 단백질 생성 관련 함수들
|
55 |
def process_chat(message, history):
|
@@ -563,19 +583,41 @@ def combined_generation(name, strength, flexibility, speed, defense, size, abili
|
|
563 |
None
|
564 |
)
|
565 |
|
566 |
-
# Gradio 인터페이스 수정
|
567 |
with gr.Blocks(theme='ParityError/Interstellar') as demo:
|
568 |
with gr.Row():
|
569 |
# 왼쪽 열: 챗봇 및 컨트롤 패널
|
570 |
with gr.Column(scale=1):
|
571 |
# 챗봇 인터페이스
|
572 |
gr.Markdown("# 🤖 AI 단백질 설계 도우미")
|
573 |
-
chatbot = gr.Chatbot()
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
579 |
|
580 |
# 탭 인터페이스
|
581 |
with gr.Tabs():
|
@@ -907,6 +949,17 @@ with gr.Blocks(theme='ParityError/Interstellar') as demo:
|
|
907 |
outputs=[hero_stats, hero_description, output_seq, output_pdb, output_viewer, plddt_plot]
|
908 |
)
|
909 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
910 |
# 실행
|
911 |
demo.queue()
|
912 |
demo.launch(debug=True)
|
|
|
1 |
import os,sys
|
2 |
+
from openai import OpenAI
|
3 |
+
import gradio as gr
|
4 |
|
5 |
# install required packages
|
|
|
|
|
6 |
os.system('pip install -q plotly')
|
7 |
os.system('pip install -q matplotlib')
|
8 |
os.system('pip install dgl==1.0.2+cu116 -f https://data.dgl.ai/wheels/cu116/repo.html')
|
9 |
os.environ["DGLBACKEND"] = "pytorch"
|
10 |
print('Modules installed')
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
# 필수 라이브러리 임포트
|
|
|
13 |
from datasets import load_dataset
|
14 |
import plotly.graph_objects as go
|
15 |
import numpy as np
|
|
|
24 |
from model.util import writepdb
|
25 |
from utils.inpainting_util import *
|
26 |
|
27 |
+
# Hugging Face 토큰 설정
|
28 |
+
ACCESS_TOKEN = os.getenv("HF_TOKEN")
|
29 |
+
if not ACCESS_TOKEN:
|
30 |
+
raise ValueError("HF_TOKEN not found in environment variables")
|
31 |
+
|
32 |
+
# OpenAI 클라이언트 설정 (Hugging Face 엔드포인트 사용)
|
33 |
+
client = OpenAI(
|
34 |
+
base_url="https://api-inference.huggingface.co/v1/",
|
35 |
+
api_key=ACCESS_TOKEN,
|
36 |
+
)
|
37 |
|
38 |
# 데이터셋 로드
|
39 |
ds = load_dataset("lamm-mit/protein_secondary_structure_from_PDB",
|
40 |
+
token=ACCESS_TOKEN)
|
41 |
+
|
42 |
+
def respond(
|
43 |
+
message,
|
44 |
+
history: list[tuple[str, str]],
|
45 |
+
system_message,
|
46 |
+
max_tokens,
|
47 |
+
temperature,
|
48 |
+
top_p,
|
49 |
+
):
|
50 |
+
messages = [{"role": "system", "content": system_message}]
|
51 |
+
|
52 |
+
for val in history:
|
53 |
+
if val[0]:
|
54 |
+
messages.append({"role": "user", "content": val[0]})
|
55 |
+
if val[1]:
|
56 |
+
messages.append({"role": "assistant", "content": val[1]})
|
57 |
+
|
58 |
+
messages.append({"role": "user", "content": message})
|
59 |
+
|
60 |
+
response = ""
|
61 |
+
|
62 |
+
for message in client.chat.completions.create(
|
63 |
+
model="CohereForAI/c4ai-command-r-plus-08-2024",
|
64 |
+
max_tokens=max_tokens,
|
65 |
+
stream=True,
|
66 |
+
temperature=temperature,
|
67 |
+
top_p=top_p,
|
68 |
+
messages=messages,
|
69 |
+
):
|
70 |
+
token = message.choices[0].delta.content
|
71 |
+
response += token
|
72 |
+
yield response
|
73 |
|
74 |
# 챗봇 및 단백질 생성 관련 함수들
|
75 |
def process_chat(message, history):
|
|
|
583 |
None
|
584 |
)
|
585 |
|
|
|
586 |
with gr.Blocks(theme='ParityError/Interstellar') as demo:
|
587 |
with gr.Row():
|
588 |
# 왼쪽 열: 챗봇 및 컨트롤 패널
|
589 |
with gr.Column(scale=1):
|
590 |
# 챗봇 인터페이스
|
591 |
gr.Markdown("# 🤖 AI 단백질 설계 도우미")
|
592 |
+
chatbot = gr.Chatbot(height=600)
|
593 |
+
|
594 |
+
with gr.Accordion("채팅 설정", open=False):
|
595 |
+
system_message = gr.Textbox(
|
596 |
+
value="당신은 단백질 설계를 도와주는 전문가입니다.",
|
597 |
+
label="시스템 메시지"
|
598 |
+
)
|
599 |
+
max_tokens = gr.Slider(
|
600 |
+
minimum=1,
|
601 |
+
maximum=2048,
|
602 |
+
value=512,
|
603 |
+
step=1,
|
604 |
+
label="최대 토큰 수"
|
605 |
+
)
|
606 |
+
temperature = gr.Slider(
|
607 |
+
minimum=0.1,
|
608 |
+
maximum=4.0,
|
609 |
+
value=0.7,
|
610 |
+
step=0.1,
|
611 |
+
label="Temperature"
|
612 |
+
)
|
613 |
+
top_p = gr.Slider(
|
614 |
+
minimum=0.1,
|
615 |
+
maximum=1.0,
|
616 |
+
value=0.95,
|
617 |
+
step=0.05,
|
618 |
+
label="Top-P"
|
619 |
+
)
|
620 |
+
|
621 |
|
622 |
# 탭 인터페이스
|
623 |
with gr.Tabs():
|
|
|
949 |
outputs=[hero_stats, hero_description, output_seq, output_pdb, output_viewer, plddt_plot]
|
950 |
)
|
951 |
|
952 |
+
chat_interface = gr.ChatInterface(
|
953 |
+
respond,
|
954 |
+
additional_inputs=[
|
955 |
+
system_message,
|
956 |
+
max_tokens,
|
957 |
+
temperature,
|
958 |
+
top_p,
|
959 |
+
],
|
960 |
+
chatbot=chatbot,
|
961 |
+
)
|
962 |
+
|
963 |
# 실행
|
964 |
demo.queue()
|
965 |
demo.launch(debug=True)
|