-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6aa7700
commit 931cfaf
Showing
3 changed files
with
359 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,357 @@ | ||
<!DOCTYPE html> | ||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> | ||
|
||
<meta charset="utf-8"> | ||
<meta name="generator" content="quarto-1.3.353"> | ||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> | ||
|
||
|
||
<title>website</title> | ||
<style> | ||
code{white-space: pre-wrap;} | ||
span.smallcaps{font-variant: small-caps;} | ||
div.columns{display: flex; gap: min(4vw, 1.5em);} | ||
div.column{flex: auto; overflow-x: auto;} | ||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} | ||
ul.task-list{list-style: none;} | ||
ul.task-list li input[type="checkbox"] { | ||
width: 0.8em; | ||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ | ||
vertical-align: middle; | ||
} | ||
/* CSS for syntax highlighting */ | ||
pre > code.sourceCode { white-space: pre; position: relative; } | ||
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } | ||
pre > code.sourceCode > span:empty { height: 1.2em; } | ||
.sourceCode { overflow: visible; } | ||
code.sourceCode > span { color: inherit; text-decoration: inherit; } | ||
div.sourceCode { margin: 1em 0; } | ||
pre.sourceCode { margin: 0; } | ||
@media screen { | ||
div.sourceCode { overflow: auto; } | ||
} | ||
@media print { | ||
pre > code.sourceCode { white-space: pre-wrap; } | ||
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } | ||
} | ||
pre.numberSource code | ||
{ counter-reset: source-line 0; } | ||
pre.numberSource code > span | ||
{ position: relative; left: -4em; counter-increment: source-line; } | ||
pre.numberSource code > span > a:first-child::before | ||
{ content: counter(source-line); | ||
position: relative; left: -1em; text-align: right; vertical-align: baseline; | ||
border: none; display: inline-block; | ||
-webkit-touch-callout: none; -webkit-user-select: none; | ||
-khtml-user-select: none; -moz-user-select: none; | ||
-ms-user-select: none; user-select: none; | ||
padding: 0 4px; width: 4em; | ||
} | ||
pre.numberSource { margin-left: 3em; padding-left: 4px; } | ||
div.sourceCode | ||
{ } | ||
@media screen { | ||
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } | ||
} | ||
</style> | ||
|
||
|
||
<script src="website_files/libs/clipboard/clipboard.min.js"></script> | ||
<script src="website_files/libs/quarto-html/quarto.js"></script> | ||
<script src="website_files/libs/quarto-html/popper.min.js"></script> | ||
<script src="website_files/libs/quarto-html/tippy.umd.min.js"></script> | ||
<script src="website_files/libs/quarto-html/anchor.min.js"></script> | ||
<link href="website_files/libs/quarto-html/tippy.css" rel="stylesheet"> | ||
<link href="website_files/libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles"> | ||
<script src="website_files/libs/bootstrap/bootstrap.min.js"></script> | ||
<link href="website_files/libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> | ||
<link href="website_files/libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light"> | ||
|
||
|
||
</head> | ||
|
||
<body class="fullcontent"> | ||
|
||
<div id="quarto-content" class="page-columns page-rows-contents page-layout-article"> | ||
|
||
<main class="content" id="quarto-document-content"> | ||
|
||
|
||
|
||
<p><a href="index.html">Exercises</a> / <a href="exercise_session_1.html">Exercise session 1</a> /</p> | ||
<section id="using-llms-to-create-an-email" class="level2"> | ||
<h2 class="anchored" data-anchor-id="using-llms-to-create-an-email">Try text generation with citations</h2> | ||
<p>Try out <a href="https://www.perplexity.ai/">Perplexity</a>, another LLM that prides itself with accuracy and source citations. It is supposed to be better than the other popular LLMs for scientific work as it claims to provide references.</p> | ||
<p>Here are some example prompts you can try out using the perplexity.</p> | ||
<div class="cell"> | ||
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Explain how olokizumab works.</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> | ||
</div> | ||
<p>Another prompt you can try</p> | ||
<div class="cell"> | ||
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="co"># In the context of RA, can serology help predict treatment outcomes among patients starting TNFi treatment?.</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> | ||
</div> | ||
|
||
<section id="update-emails" class="level3"> | ||
<h3 class="anchored" data-anchor-id="update-emails">Chain of thought</h3> | ||
<p>Here is another example of extracting information and then answering questions with chain of thought shown by the LLM.</p> | ||
|
||
<p>USMLE Question: A 27-year-old IV drug abuser female gave birth to a 7 lb 2 oz (3.2 kg) baby girl. The obstetrician is worried that the child may have been infected due to the mother’s habitual use of antiretroviral medications. Which of the following assays would hospital labs use to detect the genetic material of HIV if the child had been infected? | ||
<ul> | ||
<li>A) Enzyme-linked immunosorbent assay (ELISA)</li> | ||
<li>B) Rapid HIV antibody test</li> | ||
<li>C) Polymerase chain reaction (PCR)</li> | ||
<li>D) Southern blot</li> | ||
</ul> | ||
</p> | ||
|
||
|
||
<div class="cell"> | ||
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="co"># 1. Answer the question | ||
2. Ansewr the question with an added “think step by step”.</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div> | ||
</div> | ||
|
||
</section> | ||
|
||
</section> | ||
|
||
</main> | ||
<!-- /main column --> | ||
<script id="quarto-html-after-body" type="application/javascript"> | ||
window.document.addEventListener("DOMContentLoaded", function (event) { | ||
const toggleBodyColorMode = (bsSheetEl) => { | ||
const mode = bsSheetEl.getAttribute("data-mode"); | ||
const bodyEl = window.document.querySelector("body"); | ||
if (mode === "dark") { | ||
bodyEl.classList.add("quarto-dark"); | ||
bodyEl.classList.remove("quarto-light"); | ||
} else { | ||
bodyEl.classList.add("quarto-light"); | ||
bodyEl.classList.remove("quarto-dark"); | ||
} | ||
} | ||
const toggleBodyColorPrimary = () => { | ||
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap"); | ||
if (bsSheetEl) { | ||
toggleBodyColorMode(bsSheetEl); | ||
} | ||
} | ||
toggleBodyColorPrimary(); | ||
const icon = ""; | ||
const anchorJS = new window.AnchorJS(); | ||
anchorJS.options = { | ||
placement: 'right', | ||
icon: icon | ||
}; | ||
anchorJS.add('.anchored'); | ||
const isCodeAnnotation = (el) => { | ||
for (const clz of el.classList) { | ||
if (clz.startsWith('code-annotation-')) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
const clipboard = new window.ClipboardJS('.code-copy-button', { | ||
text: function(trigger) { | ||
const codeEl = trigger.previousElementSibling.cloneNode(true); | ||
for (const childEl of codeEl.children) { | ||
if (isCodeAnnotation(childEl)) { | ||
childEl.remove(); | ||
} | ||
} | ||
return codeEl.innerText; | ||
} | ||
}); | ||
clipboard.on('success', function(e) { | ||
// button target | ||
const button = e.trigger; | ||
// don't keep focus | ||
button.blur(); | ||
// flash "checked" | ||
button.classList.add('code-copy-button-checked'); | ||
var currentTitle = button.getAttribute("title"); | ||
button.setAttribute("title", "Copied!"); | ||
let tooltip; | ||
if (window.bootstrap) { | ||
button.setAttribute("data-bs-toggle", "tooltip"); | ||
button.setAttribute("data-bs-placement", "left"); | ||
button.setAttribute("data-bs-title", "Copied!"); | ||
tooltip = new bootstrap.Tooltip(button, | ||
{ trigger: "manual", | ||
customClass: "code-copy-button-tooltip", | ||
offset: [0, -8]}); | ||
tooltip.show(); | ||
} | ||
setTimeout(function() { | ||
if (tooltip) { | ||
tooltip.hide(); | ||
button.removeAttribute("data-bs-title"); | ||
button.removeAttribute("data-bs-toggle"); | ||
button.removeAttribute("data-bs-placement"); | ||
} | ||
button.setAttribute("title", currentTitle); | ||
button.classList.remove('code-copy-button-checked'); | ||
}, 1000); | ||
// clear code selection | ||
e.clearSelection(); | ||
}); | ||
function tippyHover(el, contentFn) { | ||
const config = { | ||
allowHTML: true, | ||
content: contentFn, | ||
maxWidth: 500, | ||
delay: 100, | ||
arrow: false, | ||
appendTo: function(el) { | ||
return el.parentElement; | ||
}, | ||
interactive: true, | ||
interactiveBorder: 10, | ||
theme: 'quarto', | ||
placement: 'bottom-start' | ||
}; | ||
window.tippy(el, config); | ||
} | ||
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); | ||
for (var i=0; i<noterefs.length; i++) { | ||
const ref = noterefs[i]; | ||
tippyHover(ref, function() { | ||
// use id or data attribute instead here | ||
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); | ||
try { href = new URL(href).hash; } catch {} | ||
const id = href.replace(/^#\/?/, ""); | ||
const note = window.document.getElementById(id); | ||
return note.innerHTML; | ||
}); | ||
} | ||
let selectedAnnoteEl; | ||
const selectorForAnnotation = ( cell, annotation) => { | ||
let cellAttr = 'data-code-cell="' + cell + '"'; | ||
let lineAttr = 'data-code-annotation="' + annotation + '"'; | ||
const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; | ||
return selector; | ||
} | ||
const selectCodeLines = (annoteEl) => { | ||
const doc = window.document; | ||
const targetCell = annoteEl.getAttribute("data-target-cell"); | ||
const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); | ||
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); | ||
const lines = annoteSpan.getAttribute("data-code-lines").split(","); | ||
const lineIds = lines.map((line) => { | ||
return targetCell + "-" + line; | ||
}) | ||
let top = null; | ||
let height = null; | ||
let parent = null; | ||
if (lineIds.length > 0) { | ||
//compute the position of the single el (top and bottom and make a div) | ||
const el = window.document.getElementById(lineIds[0]); | ||
top = el.offsetTop; | ||
height = el.offsetHeight; | ||
parent = el.parentElement.parentElement; | ||
if (lineIds.length > 1) { | ||
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); | ||
const bottom = lastEl.offsetTop + lastEl.offsetHeight; | ||
height = bottom - top; | ||
} | ||
if (top !== null && height !== null && parent !== null) { | ||
// cook up a div (if necessary) and position it | ||
let div = window.document.getElementById("code-annotation-line-highlight"); | ||
if (div === null) { | ||
div = window.document.createElement("div"); | ||
div.setAttribute("id", "code-annotation-line-highlight"); | ||
div.style.position = 'absolute'; | ||
parent.appendChild(div); | ||
} | ||
div.style.top = top - 2 + "px"; | ||
div.style.height = height + 4 + "px"; | ||
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); | ||
if (gutterDiv === null) { | ||
gutterDiv = window.document.createElement("div"); | ||
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); | ||
gutterDiv.style.position = 'absolute'; | ||
const codeCell = window.document.getElementById(targetCell); | ||
const gutter = codeCell.querySelector('.code-annotation-gutter'); | ||
gutter.appendChild(gutterDiv); | ||
} | ||
gutterDiv.style.top = top - 2 + "px"; | ||
gutterDiv.style.height = height + 4 + "px"; | ||
} | ||
selectedAnnoteEl = annoteEl; | ||
} | ||
}; | ||
const unselectCodeLines = () => { | ||
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; | ||
elementsIds.forEach((elId) => { | ||
const div = window.document.getElementById(elId); | ||
if (div) { | ||
div.remove(); | ||
} | ||
}); | ||
selectedAnnoteEl = undefined; | ||
}; | ||
// Attach click handler to the DT | ||
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); | ||
for (const annoteDlNode of annoteDls) { | ||
annoteDlNode.addEventListener('click', (event) => { | ||
const clickedEl = event.target; | ||
if (clickedEl !== selectedAnnoteEl) { | ||
unselectCodeLines(); | ||
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); | ||
if (activeEl) { | ||
activeEl.classList.remove('code-annotation-active'); | ||
} | ||
selectCodeLines(clickedEl); | ||
clickedEl.classList.add('code-annotation-active'); | ||
} else { | ||
// Unselect the line | ||
unselectCodeLines(); | ||
clickedEl.classList.remove('code-annotation-active'); | ||
} | ||
}); | ||
} | ||
const findCites = (el) => { | ||
const parentEl = el.parentElement; | ||
if (parentEl) { | ||
const cites = parentEl.dataset.cites; | ||
if (cites) { | ||
return { | ||
el, | ||
cites: cites.split(' ') | ||
}; | ||
} else { | ||
return findCites(el.parentElement) | ||
} | ||
} else { | ||
return undefined; | ||
} | ||
}; | ||
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); | ||
for (var i=0; i<bibliorefs.length; i++) { | ||
const ref = bibliorefs[i]; | ||
const citeInfo = findCites(ref); | ||
if (citeInfo) { | ||
tippyHover(citeInfo.el, function() { | ||
var popup = window.document.createElement('div'); | ||
citeInfo.cites.forEach(function(cite) { | ||
var citeDiv = window.document.createElement('div'); | ||
citeDiv.classList.add('hanging-indent'); | ||
citeDiv.classList.add('csl-entry'); | ||
var biblioDiv = window.document.getElementById('ref-' + cite); | ||
if (biblioDiv) { | ||
citeDiv.innerHTML = biblioDiv.innerHTML; | ||
} | ||
popup.appendChild(citeDiv); | ||
}); | ||
return popup.innerHTML; | ||
}); | ||
} | ||
} | ||
}); | ||
</script> | ||
</div> <!-- /content --> | ||
|
||
|
||
|
||
</body></html> |