UNPKG

@vectara/react-chatbot

Version:
2 lines (1 loc) 7.93 kB
"use strict";var J=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var le=Object.prototype.hasOwnProperty;var me=(t,o)=>{for(var l in o)J(t,l,{get:o[l],enumerable:!0})},pe=(t,o,l,b)=>{if(o&&typeof o=="object"||typeof o=="function")for(let m of ce(o))!le.call(t,m)&&m!==l&&J(t,m,{get:()=>o[m],enumerable:!(b=ue(o,m))||b.enumerable});return t};var ge=t=>pe(J({},"__esModule",{value:!0}),t);var he={};me(he,{DEFAULT_LAMBDA_VALUE:()=>oe,DEFAULT_RERANKER_ID:()=>ae,DEFAULT_SUMMARIZER:()=>ne,useChat:()=>fe});module.exports=ge(he);var d=require("react");var X="https://api.vectara.io",Y="%START_SNIPPET%",W="%END_SNIPPET%";var se=require("@vectara/stream-query-client");var v="%START_SNIPPET%",ee="%END_SNIPPET%",Z=t=>{let[o,l]=t.indexOf(v)!==-1?t.split(v):["",t],[b,m]=l.indexOf(ee)!==-1?l.split(ee):[l,""];return{pre:o,post:m,text:b}};var ye=t=>{if(t){if(t.type==="none")return{type:t.type};if(t.type==="customer_reranker")return{type:t.type,reranker_id:t.rerankerId};if(t.type==="mmr")return{type:t.type,diversity_bias:t.diversityBias}}},de=t=>{if(t){if(t.style==="none"||t.style==="numeric")return{style:t.style};if(t.style==="html"||t.style==="markdown")return{style:t.style,url_pattern:t.urlPattern,text_pattern:t.textPattern}}},te=async({customerId:t,corpusKeys:o,apiKey:l,query:b,domain:m,search:B,generation:N,chat:H})=>{var S;let{metadataFilter:I,lexicalInterpolation:G,customDimensions:$,semantics:P,offset:j,limit:L,contextConfiguration:r,reranker:_}=B,T={query:b,search:{corpora:o.split(",").map(g=>({corpus_key:g,metadata_filter:I,lexical_interpolation:G,custom_dimensions:$,semantics:P})),offset:j,limit:L,context_configuration:{characters_before:r==null?void 0:r.charactersBefore,characters_after:r==null?void 0:r.charactersAfter,sentences_before:r==null?void 0:r.sentencesBefore,sentences_after:r==null?void 0:r.sentencesAfter,start_tag:r==null?void 0:r.startTag,end_tag:r==null?void 0:r.endTag},reranker:ye(_)}};if(N){let{promptName:g,maxUsedSearchResults:C,promptText:O,maxResponseCharacters:K,responseLanguage:E,modelParameters:x,citations:M,enableFactualConsistencyScore:V}=N;T.generation={prompt_name:g,max_used_search_results:C,prompt_text:O,max_response_characters:K,response_language:E,model_parameters:x&&{max_tokens:x.maxTokens,temperature:x.temperature,frequency_penalty:x.frequencyPenalty,presence_penalty:x.presencePenalty},citations:de(M),enable_factual_consistency_score:V}}H&&(T.chat={store:H.store});let p={"customer-id":t,"Content-Type":"application/json"};l&&(p["x-api-key"]=l);let Q=`${m!=null?m:X}/v2/chats`,u=await fetch(Q,{method:"POST",headers:p,body:JSON.stringify(T)});if(u.status===400||u.status===403||u.status===404){let g=await u.json();throw new Error(`BAD REQUEST: ${(S=g==null?void 0:g.messages[0])!=null?S:g.field_errors}`)}if(u.status!==200)throw new Error(u.status.toString());return await u.json()};var ne="vectara-summary-ext-v1.2.0",ae=272725718,oe=.005,fe=({customerId:t,corpusKeys:o,apiKey:l,numberOfSearchResults:b=10,language:m="eng",enableFactualConsistencyScore:B,summaryPromptName:N=ne,customPrompt:H=void 0,rerankerId:I=ae,lambda:G=oe,enableStreaming:$=!0,agenticConfiguration:P,requestSource:j})=>{let[L,r]=(0,d.useState)([]),_=(0,d.useRef)(""),[T,p]=(0,d.useState)(null),[Q,u]=(0,d.useState)(!1),[S,g]=(0,d.useState)(!1),[C,O]=(0,d.useState)(null),[K,E]=(0,d.useState)(!1),[x,M]=(0,d.useState)(null),V=async({query:R,isRetry:z=!1})=>{var F,U,i;let w,f,a;if(Q)return;if(z&&E(!1),p(null),_.current=R,u(!0),p({id:"placeholder-message-id",type:"turn",question:R,answer:"",results:[],factualConsistencyScore:void 0}),P){let c=L.reduce((e,n)=>(n.type==="turn"&&e.push(n),e),[]).reduce((e,n)=>(e.push({role:"user",message:n.question}),n.answer&&e.push({role:"chatbot",message:n.answer}),e),[]);c.push({role:"user",message:_.current});let q=await(await fetch(P.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:c})})).json();a=P.onAgenticResponse(q),{content:w,post:f}=(F=a==null?void 0:a.message)!=null?F:{}}let A;if($)if(g(!0),w)u(!1),await D(w),f&&(await D("",!0),await D(f)),g(!1),M((U=a==null?void 0:a.userActionOptions)!=null?U:null);else try{let s=async h=>{var q;switch(h.type){case"requestError":case"genericError":case"error":E(!0),u(!1);break;case"chatInfo":O(h.chatId),p(e=>{var n,y;return{id:h.chatId,type:"turn",question:_.current,answer:(n=e==null?void 0:e.answer)!=null?n:"",results:(y=e==null?void 0:e.results)!=null?y:[]}});break;case"searchResults":A=h.searchResults.map(e=>{a==null||a.userActionOptions;let{pre:n,text:y,post:k}=Z(e.text);return{...e,snippet:{pre:n,text:y,post:k}}}),p(e=>{var n,y;return{id:(n=e==null?void 0:e.id)!=null?n:"",type:"turn",question:_.current,answer:(y=e==null?void 0:e.answer)!=null?y:"",results:A}});break;case"generationChunk":g(!0),u(!1),p(e=>{var n,y,k;return{id:(n=e==null?void 0:e.id)!=null?n:"",type:"turn",question:_.current,answer:(y=h.updatedText)!=null?y:"",results:(k=e==null?void 0:e.results)!=null?k:[]}});break;case"factualConsistencyScore":p(e=>{var n,y,k;return{id:(n=e==null?void 0:e.id)!=null?n:"",type:"turn",question:_.current,answer:(y=e==null?void 0:e.answer)!=null?y:"",results:(k=e==null?void 0:e.results)!=null?k:[],factualConsistencyScore:h.factualConsistencyScore}});break;case"end":f&&(await D("",!0),await D(f)),g(!1),M((q=a==null?void 0:a.userActionOptions)!=null?q:null);break}},c={apiKey:l,customerId:t,query:R,corpusKey:o,search:{offset:0,metadataFilter:"",lexicalInterpolation:G,reranker:I===272725718?{type:"mmr",diversityBias:0}:{type:"customer_reranker",rerankerId:`rnk_${I}`},contextConfiguration:{sentencesBefore:2,sentencesAfter:2,startTag:Y,endTag:W}},chat:{store:!0,conversationId:C!=null?C:void 0},generation:{generationPresetName:N,maxUsedSearchResults:b,enableFactualConsistencyScore:B,responseLanguage:m,promptTemplate:H}};await(0,se.streamQueryV2)({streamQueryConfig:c,onStreamEvent:s,requestSource:j})}catch(s){console.log("Summary error",s),E(!0),u(!1);return}else try{if(w)r(s=>[...s,{id:`agentic-query-${Date.now()}`,type:"turn",question:_.current,answer:w+(f?`<br><br>${f}`:""),results:A!=null?A:[],factualConsistencyScore:void 0}]);else{let s=await te({apiKey:l,customerId:t,query:R,corpusKeys:o,search:{offset:0,metadataFilter:"",lexicalInterpolation:G,reranker:I===272725718?{type:"mmr",diversityBias:0}:{type:"customer_reranker",rerankerId:`rnk_${I}`},contextConfiguration:{sentencesBefore:2,sentencesAfter:2,startTag:Y,endTag:W}},chat:{store:!0,conversationId:C!=null?C:void 0},generation:{promptName:N,maxUsedSearchResults:b,enableFactualConsistencyScore:B,responseLanguage:m}});A=s.search_results.map(c=>{let{pre:h,text:q,post:e}=Z(c.text);return{...c,snippet:{pre:h,text:q,post:e}}}),O(s.chat_id),r(c=>{var h;return[...c,{id:s.chat_id,type:"turn",question:_.current,answer:((h=s==null?void 0:s.answer)!=null?h:"")+(f?`<br><br>${f}`:""),results:A!=null?A:[],factualConsistencyScore:s.factual_consistency_score}]})}M((i=a==null?void 0:a.userActionOptions)!=null?i:null),p(null),u(!1)}catch(s){console.log("Summary error",s),E(!0),u(!1);return}},ie=()=>{r([]),O(null)},D=(R,z)=>new Promise(w=>{let f=R.split(""),a={id:"placeholder-message-id",type:"turn",question:_.current,factualConsistencyScore:void 0},A=window.setInterval(()=>{var U;let F=(U=f.shift())!=null?U:"";p(i=>{var s,c;return{...a,results:(s=i==null?void 0:i.results)!=null?s:[],answer:((c=i==null?void 0:i.answer)!=null?c:"")+F}}),f.length===0&&(clearInterval(A),z&&p(i=>{var s,c;return{...a,results:(s=i==null?void 0:i.results)!=null?s:[],answer:((c=i==null?void 0:i.answer)!=null?c:"")+"<br><br>"}}),w())},10)});return(0,d.useEffect)(()=>{!S&&T&&(r([...L,T]),p(null))},[S]),(0,d.useEffect)(()=>{x&&r(R=>[...R,{id:`user-action-${Date.now().toString()}`,type:"action",options:x}]),M(null)},[x]),{sendMessage:V,activeMessage:T,messageHistory:L,isLoading:Q,isStreamingResponse:S,startNewConversation:ie,hasError:K}};