azlaan428 commited on
Commit
7dd2c52
Β·
1 Parent(s): d0b7211

feat: migrate inference to Qwen2.5-72B on AMD MI300X via vLLM

Browse files
Files changed (3) hide show
  1. agent/agent.py +5 -5
  2. sessions.json +0 -0
  3. 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 langchain_groq import ChatGroq
13
- return ChatGroq(
14
- model="llama-3.1-8b-instant",
15
  temperature=0,
16
- api_key=os.environ.get("GROQ_API_KEY")
 
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 &mdash; Glitch Squad</div>
885
  <h1>Autonomous Research Intelligence Agent</h1>
886
- <div class="subtitle">Multi-agent biomedical literature synthesis &middot; PubMed &middot; Groq LLaMA-3.1 &middot; by Azlaan Mohammad</div>
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 &mdash; generating MeSH-optimised PubMed queries</div>
909
- <div class="stage" id="stage2"><div class="stage-dot"></div>Literature Scout &mdash; fetching and deduplicating papers</div>
910
- <div class="stage" id="stage3"><div class="stage-dot"></div>Evidence Synthesiser &mdash; building structured synthesis</div>
911
- <div class="stage" id="stage4"><div class="stage-dot"></div>Citation Builder &mdash; formatting references</div>
 
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 &middot; Groq LLaMA-3.1 &middot; PubMed NCBI</span>
987
  <span>AI-generated synthesis &mdash; verify against primary sources</span>
988
  <span style="color:var(--text-dim);font-family:var(--mono);font-size:10px;">Azlaan Mohammad &middot; 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 <= 4; 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">LLaMA-3.1-8B via Groq</div>`;
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 &mdash; Glitch Squad</div>
885
  <h1>Autonomous Research Intelligence Agent</h1>
886
+ <div class="subtitle">Multi-agent biomedical literature synthesis &middot; PubMed &middot; Qwen2.5-72B on AMD MI300X &middot; 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 &mdash; generating MeSH-optimised PubMed queries</div>
909
+ <div class="stage" id="stage2"><div class="stage-dot"></div>Literature Scout &mdash; fetching and deduplicating papers</div>
910
+ <div class="stage" id="stage3"><div class="stage-dot"></div>PRISMA Filter &mdash; screening papers for relevance</div>
911
+ <div class="stage" id="stage4"><div class="stage-dot"></div>Evidence Synthesiser &mdash; building structured synthesis</div>
912
+ <div class="stage" id="stage5"><div class="stage-dot"></div>Citation Builder &mdash; formatting references</div>
913
  </div>
914
 
915
  <div class="error-box" id="errorBox"></div>
 
984
  </div>
985
 
986
  <footer>
987
+ <span>Powered by LangGraph &middot; Qwen2.5-72B &middot; AMD MI300X &middot; PubMed NCBI</span>
988
  <span>AI-generated synthesis &mdash; verify against primary sources</span>
989
  <span style="color:var(--text-dim);font-family:var(--mono);font-size:10px;">Azlaan Mohammad &middot; 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 = "";