azlaan428 commited on
Commit Β·
7dd2c52
1
Parent(s): d0b7211
feat: migrate inference to Qwen2.5-72B on AMD MI300X via vLLM
Browse files- agent/agent.py +5 -5
- sessions.json +0 -0
- templates/index.html +8 -7
agent/agent.py
CHANGED
|
@@ -9,14 +9,14 @@ from retrieval.pubmed import fetch_pubmed
|
|
| 9 |
|
| 10 |
|
| 11 |
def get_llm():
|
| 12 |
-
from
|
| 13 |
-
return
|
| 14 |
-
model="
|
| 15 |
temperature=0,
|
| 16 |
-
|
|
|
|
| 17 |
)
|
| 18 |
|
| 19 |
-
|
| 20 |
def llm_invoke_with_retry(llm, prompt, max_retries=5):
|
| 21 |
import time
|
| 22 |
for attempt in range(max_retries):
|
|
|
|
| 9 |
|
| 10 |
|
| 11 |
def get_llm():
|
| 12 |
+
from langchain_openai import ChatOpenAI
|
| 13 |
+
return ChatOpenAI(
|
| 14 |
+
model="Qwen/Qwen2.5-72B-Instruct",
|
| 15 |
temperature=0,
|
| 16 |
+
openai_api_key=os.environ.get("VLLM_API_KEY", "EMPTY"),
|
| 17 |
+
openai_api_base=os.environ.get("VLLM_BASE_URL", "http://localhost:8000/v1"),
|
| 18 |
)
|
| 19 |
|
|
|
|
| 20 |
def llm_invoke_with_retry(llm, prompt, max_retries=5):
|
| 21 |
import time
|
| 22 |
for attempt in range(max_retries):
|
sessions.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
templates/index.html
CHANGED
|
@@ -883,7 +883,7 @@
|
|
| 883 |
</div>
|
| 884 |
<div style="font-family:var(--mono);font-size:10px;letter-spacing:0.15em;color:#00f5ff;text-transform:uppercase;margin-bottom:6px;">AMD Developer Hackathon 2026 — Glitch Squad</div>
|
| 885 |
<h1>Autonomous Research Intelligence Agent</h1>
|
| 886 |
-
<div class="subtitle">Multi-agent biomedical literature synthesis · PubMed ·
|
| 887 |
</header>
|
| 888 |
|
| 889 |
<div class="search-section">
|
|
@@ -906,9 +906,10 @@
|
|
| 906 |
</div>
|
| 907 |
</div>
|
| 908 |
<div class="stage" id="stage1"><div class="stage-dot"></div>Query Architect — generating MeSH-optimised PubMed queries</div>
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
|
|
|
|
| 912 |
</div>
|
| 913 |
|
| 914 |
<div class="error-box" id="errorBox"></div>
|
|
@@ -983,7 +984,7 @@
|
|
| 983 |
</div>
|
| 984 |
|
| 985 |
<footer>
|
| 986 |
-
<span>Powered by LangGraph ·
|
| 987 |
<span>AI-generated synthesis — verify against primary sources</span>
|
| 988 |
<span style="color:var(--text-dim);font-family:var(--mono);font-size:10px;">Azlaan Mohammad · 2026</span>
|
| 989 |
</footer>
|
|
@@ -1016,7 +1017,7 @@ function parseSynthesis(text) {
|
|
| 1016 |
const STAGE_PCT = { 1: 10, 2: 35, 3: 70, 4: 90, 5: 100 };
|
| 1017 |
|
| 1018 |
function setStage(n) {
|
| 1019 |
-
for (let i = 1; i <=
|
| 1020 |
const el = document.getElementById("stage" + i);
|
| 1021 |
el.classList.remove("active", "done");
|
| 1022 |
if (i < n) el.classList.add("done");
|
|
@@ -1038,7 +1039,7 @@ function toggleCitations() {
|
|
| 1038 |
// ββ Render Results ββββββββββββββββββββββββββββββββββββββββ
|
| 1039 |
async function renderResults(data) {
|
| 1040 |
const meta = document.getElementById("metaBar");
|
| 1041 |
-
meta.innerHTML = `<div class="badge green">${data.paper_count} papers retrieved</div><div class="badge">${data.queries ? data.queries.length : 0} PubMed queries</div><div class="badge">
|
| 1042 |
const sections = parseSynthesis(data.synthesis);
|
| 1043 |
const synthEl = document.getElementById("synthesis");
|
| 1044 |
synthEl.innerHTML = "";
|
|
|
|
| 883 |
</div>
|
| 884 |
<div style="font-family:var(--mono);font-size:10px;letter-spacing:0.15em;color:#00f5ff;text-transform:uppercase;margin-bottom:6px;">AMD Developer Hackathon 2026 — Glitch Squad</div>
|
| 885 |
<h1>Autonomous Research Intelligence Agent</h1>
|
| 886 |
+
<div class="subtitle">Multi-agent biomedical literature synthesis · PubMed · Qwen2.5-72B on AMD MI300X · by Azlaan Mohammad</div>
|
| 887 |
</header>
|
| 888 |
|
| 889 |
<div class="search-section">
|
|
|
|
| 906 |
</div>
|
| 907 |
</div>
|
| 908 |
<div class="stage" id="stage1"><div class="stage-dot"></div>Query Architect — generating MeSH-optimised PubMed queries</div>
|
| 909 |
+
<div class="stage" id="stage2"><div class="stage-dot"></div>Literature Scout — fetching and deduplicating papers</div>
|
| 910 |
+
<div class="stage" id="stage3"><div class="stage-dot"></div>PRISMA Filter — screening papers for relevance</div>
|
| 911 |
+
<div class="stage" id="stage4"><div class="stage-dot"></div>Evidence Synthesiser — building structured synthesis</div>
|
| 912 |
+
<div class="stage" id="stage5"><div class="stage-dot"></div>Citation Builder — formatting references</div>
|
| 913 |
</div>
|
| 914 |
|
| 915 |
<div class="error-box" id="errorBox"></div>
|
|
|
|
| 984 |
</div>
|
| 985 |
|
| 986 |
<footer>
|
| 987 |
+
<span>Powered by LangGraph · Qwen2.5-72B · AMD MI300X · PubMed NCBI</span>
|
| 988 |
<span>AI-generated synthesis — verify against primary sources</span>
|
| 989 |
<span style="color:var(--text-dim);font-family:var(--mono);font-size:10px;">Azlaan Mohammad · 2026</span>
|
| 990 |
</footer>
|
|
|
|
| 1017 |
const STAGE_PCT = { 1: 10, 2: 35, 3: 70, 4: 90, 5: 100 };
|
| 1018 |
|
| 1019 |
function setStage(n) {
|
| 1020 |
+
for (let i = 1; i <= 5; i++) {
|
| 1021 |
const el = document.getElementById("stage" + i);
|
| 1022 |
el.classList.remove("active", "done");
|
| 1023 |
if (i < n) el.classList.add("done");
|
|
|
|
| 1039 |
// ββ Render Results ββββββββββββββββββββββββββββββββββββββββ
|
| 1040 |
async function renderResults(data) {
|
| 1041 |
const meta = document.getElementById("metaBar");
|
| 1042 |
+
meta.innerHTML = `<div class="badge green">${data.paper_count} papers retrieved</div><div class="badge">${data.queries ? data.queries.length : 0} PubMed queries</div><div class="badge">Qwen2.5-72B on AMD MI300X</div>`;
|
| 1043 |
const sections = parseSynthesis(data.synthesis);
|
| 1044 |
const synthEl = document.getElementById("synthesis");
|
| 1045 |
synthEl.innerHTML = "";
|