mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-09 13:25:11 +00:00
Show generated images in chat interface on Web client
This commit is contained in:
@@ -183,12 +183,18 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
referenceSection.appendChild(polishedReference);
|
referenceSection.appendChild(polishedReference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return numOnlineReferences;
|
return numOnlineReferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderMessageWithReference(message, by, context=null, dt=null, onlineContext=null, intentType=null) {
|
||||||
|
if (intentType === "text-to-image") {
|
||||||
|
let imageMarkdown = ``;
|
||||||
|
renderMessage(imageMarkdown, by, dt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
function renderMessageWithReference(message, by, context=null, dt=null, onlineContext=null) {
|
|
||||||
if (context == null && onlineContext == null) {
|
if (context == null && onlineContext == null) {
|
||||||
renderMessage(message, by, dt);
|
renderMessage(message, by, dt);
|
||||||
return;
|
return;
|
||||||
@@ -253,6 +259,26 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
// Remove any text between <s>[INST] and </s> tags. These are spurious instructions for the AI chat model.
|
// Remove any text between <s>[INST] and </s> tags. These are spurious instructions for the AI chat model.
|
||||||
newHTML = newHTML.replace(/<s>\[INST\].+(<\/s>)?/g, '');
|
newHTML = newHTML.replace(/<s>\[INST\].+(<\/s>)?/g, '');
|
||||||
|
|
||||||
|
// Customize the rendering of images
|
||||||
|
md.renderer.rules.image = function(tokens, idx, options, env, self) {
|
||||||
|
let token = tokens[idx];
|
||||||
|
|
||||||
|
// Get image source url. Only render images with src links
|
||||||
|
let srcIndex = token.attrIndex('src');
|
||||||
|
if (srcIndex < 0) { return ''; }
|
||||||
|
let src = token.attrs[srcIndex][1];
|
||||||
|
|
||||||
|
// Wrap the image in a link
|
||||||
|
var aStart = `<a href="${src}" target="_blank">`;
|
||||||
|
var aEnd = '</a>';
|
||||||
|
|
||||||
|
// Add class="text-to-image" to images
|
||||||
|
token.attrPush(['class', 'text-to-image']);
|
||||||
|
|
||||||
|
// Use the default renderer to render image markdown format
|
||||||
|
return aStart + self.renderToken(tokens, idx, options) + aEnd;
|
||||||
|
};
|
||||||
|
|
||||||
// Render markdown
|
// Render markdown
|
||||||
newHTML = md.render(newHTML);
|
newHTML = md.render(newHTML);
|
||||||
// Get any elements with a class that starts with "language"
|
// Get any elements with a class that starts with "language"
|
||||||
@@ -414,6 +440,9 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
if (chunk.startsWith("{") && chunk.endsWith("}")) {
|
if (chunk.startsWith("{") && chunk.endsWith("}")) {
|
||||||
try {
|
try {
|
||||||
const responseAsJson = JSON.parse(chunk);
|
const responseAsJson = JSON.parse(chunk);
|
||||||
|
if (responseAsJson.imageUrl) {
|
||||||
|
rawResponse += ``;
|
||||||
|
}
|
||||||
if (responseAsJson.detail) {
|
if (responseAsJson.detail) {
|
||||||
rawResponse += responseAsJson.detail;
|
rawResponse += responseAsJson.detail;
|
||||||
}
|
}
|
||||||
@@ -516,7 +545,7 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
.then(response => {
|
.then(response => {
|
||||||
// Render conversation history, if any
|
// Render conversation history, if any
|
||||||
response.forEach(chat_log => {
|
response.forEach(chat_log => {
|
||||||
renderMessageWithReference(chat_log.message, chat_log.by, chat_log.context, new Date(chat_log.created), chat_log.onlineContext);
|
renderMessageWithReference(chat_log.message, chat_log.by, chat_log.context, new Date(chat_log.created), chat_log.onlineContext, chat_log.intent?.type);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
@@ -902,6 +931,9 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
margin-top: -10px;
|
margin-top: -10px;
|
||||||
transform: rotate(-60deg)
|
transform: rotate(-60deg)
|
||||||
}
|
}
|
||||||
|
img.text-to-image {
|
||||||
|
max-width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
#chat-footer {
|
#chat-footer {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -1029,6 +1061,9 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||||||
margin: 4px;
|
margin: 4px;
|
||||||
grid-template-columns: auto;
|
grid-template-columns: auto;
|
||||||
}
|
}
|
||||||
|
img.text-to-image {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@media only screen and (min-width: 700px) {
|
@media only screen and (min-width: 700px) {
|
||||||
body {
|
body {
|
||||||
|
|||||||
Reference in New Issue
Block a user