-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchatbot.js
More file actions
96 lines (87 loc) · 2.64 KB
/
chatbot.js
File metadata and controls
96 lines (87 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
let x=document.querySelector("#prompt")
let y=document.querySelector(".chat")
let imgbtn=document.querySelector("#img")
let imginput=document.querySelector("#img input")
const api_url="https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=AIzaSyCzIikDtpeoLOMrHgBbTxcR_4krJhDVGVI"
let user={
message:null,
file:{
mime_type:null,
data:null
}
}
async function generateresponse(aichatbox) {
let text=aichatbox.querySelector(".aca")
let requestoption={
method:"POST",
headers:{'Content-Type': 'application/json'},
body:JSON.stringify({
"contents": [
{
"parts": [
{
"text":user.message
},(user.file.data?[{"inline_data":user.file}]:[])
]
}
]
})
}
try{
let response=await fetch(api_url,requestoption)
let data=await response.json()
let apiresponse=data.candidates[0].content.parts[0].text.replace(/\*\*(.*?)\*\*/g,"$1").trim()
text.innerHTML=apiresponse
}
catch(error){
console.log(error)
}
finally{
y.scrollTo({top:y.scrollHeight,behavior:"smooth"})
}
}
function createchatbox(html,classes){
let div=document.createElement("div")
div.innerHTML=html
div.classList.add(classes)
return div
}
function handlechatresponse(message1){
user.message=message1
let imgHtml = ""
if (user.file.data) {
imgHtml = `<img src="data:${user.file.mime_type};base64,${user.file.data}" class="chooseimg"/>`
}
let html = `<img src="h.png" alt="" id="ui" width="50"><div class="uca">${message1}${imgHtml}</div>`
x.value = ""
let userchatbox=createchatbox(html,"userchat")
y.appendChild(userchatbox)
y.scrollTo({top:y.scrollHeight,behavior:"smooth"})
setTimeout(()=>{
let html='<img src="a.png" alt="" id="ai" width="50"> <div class="aca"> </div>'
let aichatbox=createchatbox(html,"aichat")
y.appendChild(aichatbox)
generateresponse(aichatbox)
},600)
}
x.addEventListener("keydown",(e)=>{
if(e.key=="Enter")
handlechatresponse(x.value)
})
imginput.addEventListener("change",()=>{
const f=imginput.files[0]
if(!f)return
let r=new FileReader()
r.onload=(e)=>{
let base64string=e.target.result.split(",")[1]
user.file={
mime_type:f.type,
data:base64string
}
}
imgbtn.innerHTML=""
r.readAsDataURL(f)
})
imgbtn.addEventListener("click",()=>{
imgbtn.querySelector("input").click()
})