promptlayer 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var z=Object.defineProperty,ae=Object.defineProperties;var ne=Object.getOwnPropertyDescriptors;var X=Object.getOwnPropertySymbols;var se=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var D=(e,t)=>{if(t=Symbol[e])return t;throw Error("Symbol."+e+" is not defined")};var H=(e,t,r)=>t in e?z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t)=>{for(var r in t||(t={}))se.call(t,r)&&H(e,r,t[r]);if(X)for(var r of X(t))pe.call(t,r)&&H(e,r,t[r]);return e},f=(e,t)=>ae(e,ne(t));var F=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var d=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})};var c=(e,t,r)=>new Promise((o,a)=>{var i=s=>{try{n(r.next(s))}catch(p){a(p)}},l=s=>{try{n(r.throw(s))}catch(p){a(p)}},n=s=>s.done?o(s.value):Promise.resolve(s.value).then(i,l);n((r=r.apply(e,t)).next())}),g=function(e,t){this[0]=e,this[1]=t},Q=(e,t,r)=>{var o=(l,n,s,p)=>{try{var w=r[l](n),T=(n=w.value)instanceof g,b=w.done;Promise.resolve(T?n[0]:n).then(y=>T?o(l==="return"?l:"next",n[1]?{done:y.done,value:y.value}:y,s,p):s({value:y,done:b})).catch(y=>o("throw",y,s,p))}catch(y){p(y)}},a=l=>i[l]=n=>new Promise((s,p)=>o(l,n,s,p)),i={};return r=r.apply(e,t),i[Symbol.asyncIterator]=()=>i,a("next"),a("throw"),a("return"),i};var V=(e,t,r)=>(t=e[D("asyncIterator")])?t.call(e):(e=e[D("iterator")](),t={},r=(o,a)=>(a=e[o])&&(t[o]=i=>new Promise((l,n,s)=>(i=a.call(e,i),s=i.done,Promise.resolve(i.value).then(p=>l({value:p,done:s}),n)))),r("next"),r("return"),t);var v={};d(v,{create:()=>le});var q={};d(q,{getApiKey:()=>m,getPromptTemplate:()=>x,promptLayerAllPromptTemplates:()=>A,promptLayerApiRequest:()=>R,promptLayerCreateGroup:()=>j,promptLayerGetPrompt:()=>S,promptLayerPublishPrompt:()=>G,promptLayerTrackGroup:()=>W,promptLayerTrackMetadata:()=>I,promptLayerTrackPrompt:()=>O,promptLayerTrackScore:()=>$,promptlayerApiHandler:()=>N,publishPromptTemplate:()=>E});var h="https://api.promptlayer.com",m=()=>{if(k.api_key===void 0)throw new Error("Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' ");return k.api_key},N=e=>c(void 0,null,function*(){return e.request_response[Symbol.asyncIterator]!==void 0?ce(e.request_response,e):yield R(e)}),R=e=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/track-request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=yield t.json();if(t.status!==200&&P(r,"WARNING: While logging your request, PromptLayer experienced the following error:"),r&&e.return_pl_id)return[e.request_response,r.request_id]}catch(t){console.warn(`WARNING: While logging your request PromptLayer had the following error: ${t}`)}return e.request_response}),A=e=>c(void 0,null,function*(){let t=new URL(`${h}/rest/prompts`);Object.entries(e||{}).forEach(([r,o])=>t.searchParams.append(r,o));try{let r=yield fetch(t,{method:"GET",headers:{"Content-Type":"application/json","X-API-KEY":m()}}),o=yield r.json();return r.status!==200&&console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(o)}`),o}catch(r){console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${r}`)}}),S=e=>c(void 0,null,function*(){var i,l,n;let t={prompt_name:e.prompt_name,version:(l=(i=e.version)==null?void 0:i.toString())!=null?l:"",label:(n=e.label)!=null?n:""},r=new URL(`${h}/library-get-prompt-template`);r.search=new URLSearchParams(t).toString();let o;try{o=yield fetch(r.toString(),{method:"GET",headers:{"X-API-KEY":m()}})}catch(s){throw new Error(`PromptLayer had the following error while getting your prompt: ${s}`)}let a=yield o.json();return o.status!==200&&Z(a,"PromptLayer had the following error while retrieving your prompt template"),a}),G=e=>c(void 0,null,function*(){let t;try{t=yield fetch(`${h}/library-publish-prompt-template`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))})}catch(o){throw new Error(`PromptLayer had the following error while publishing your prompt template: ${o}`)}let r=yield t.json();return t.status!==200&&Z(r,"PromptLayer had the following error while publishing your prompt"),!0}),I=e=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-metadata`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While logging metadata to your request, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${t}`),!1}return!0}),$=e=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-score`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While scoring your request, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While scoring your request, PromptLayer experienced the following error: ${t}`),!1}return!0}),O=e=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${t}`),!1}return!0}),W=e=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/track-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While associating your request with a group, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While associating your request with a group, PromptLayer experienced the following error: ${t}`),!1}return!0}),j=()=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/create-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:m()})}),t=yield e.json();return e.status!==200?(P(t,"WARNING: While creating a group PromptLayer had the following error"),!1):t.id}catch(e){return console.warn(`WARNING: While creating a group PromptLayer had the following error: ${e}`),!1}}),x=(e,t)=>c(void 0,null,function*(){try{let r=new URL(`${h}/prompt-templates/${e}`),o=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify(f(u({},t),{api_key:m()}))}),a=yield o.json();return o.status!==200?(P(a,"WARNING: While fetching a prompt template PromptLayer had the following error"),null):a}catch(r){return console.warn(`WARNING: While fetching a prompt template PromptLayer had the following error: ${r}`),null}}),E=e=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/rest/prompt-templates`,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify({prompt_template:u({},e),prompt_version:u({},e)})}),r=yield t.json();return t.status===400&&P(r,"WARNING: While publishing a prompt template PromptLayer had the following error"),r}catch(t){console.warn(`WARNING: While publishing a prompt template PromptLayer had the following error: ${t}`)}}),ie=e=>{if("completion"in e[0])return e.reduce((t,r)=>f(u({},r),{completion:`${t.completion}${r.completion}`}),{});if("text"in e[0].choices[0]){let t="";for(let o of e)t=`${t}${o.choices[0].text}`;let r=structuredClone(e.at(-1));return r.choices[0].text=t,r}else if("delta"in e[0].choices[0]){let t={role:"",content:""};for(let o of e)"role"in o.choices[0].delta&&(t.role=o.choices[0].delta.role),"content"in o.choices[0].delta&&(t.content=`${t.content}${o.choices[0].delta.content}`);let r=structuredClone(e.at(-1));return r.choices[0]=t,r}return""};function ce(e,t){return Q(this,null,function*(){let r=[];try{for(var i=V(e),l,n,s;l=!(n=yield new g(i.next())).done;l=!1){let p=n.value;yield p,r.push(p)}}catch(n){s=[n]}finally{try{l&&(n=i.return)&&(yield new g(n.call(i)))}finally{if(s)throw s[0]}}let o=ie(r);yield yield new g(R(f(u({},t),{request_response:o,request_end_time:new Date().toISOString()})))})}var P=(e,t)=>{try{console.warn(`${t}: ${e.message}`)}catch(r){console.warn(`${t}: ${e}`)}},Z=(e,t)=>{throw"message"in e?new Error(`${t}: ${e.message}`):new Error(`${t}: ${e.message}`)};var le=()=>c(void 0,null,function*(){return yield j()});var ee=(e,t="",r="openai")=>{let o={construct:(a,i)=>{let l=Reflect.construct(a,i);return Object.defineProperties(l,{function_name:{value:t,writable:!0},provider:{value:r}}),new Proxy(l,o)},get:(a,i,l)=>{let n=a[i],s=`${Reflect.get(a,"function_name")}.${i.toString()}`;return typeof n=="object"?(Object.defineProperties(n,{function_name:{value:s,writable:!0},provider:{value:r}}),new Proxy(n,o)):typeof n=="function"?(...p)=>{var K,M,U,B;let w=new Date().toISOString(),T=Reflect.get(a,"provider"),b=(K=p[0])==null?void 0:K.return_pl_id,y=(M=p[0])==null?void 0:M.pl_tags;(U=p[0])==null||delete U.return_pl_id,(B=p[0])==null||delete B.pl_tags;let _=Reflect.apply(n,a,p);return _ instanceof Promise?new Promise((te,re)=>{_.then(L=>c(void 0,null,function*(){let oe=yield N({api_key:m(),provider_type:T,function_name:s,request_start_time:w,request_end_time:new Date().toISOString(),request_response:L,kwargs:p[0],return_pl_id:b,tags:y});te(oe)})).catch(L=>{re(L)})}):_}:Reflect.get(a,i,l)}};return new Proxy(e,o)};var C={};d(C,{all:()=>me,get:()=>ue,publish:()=>he});var me=e=>A(e),ue=e=>c(void 0,null,function*(){let t=yield S(e),r=t.prompt_template,o=t.metadata;return{prompt_template:r,metadata:o}}),he=e=>{let{prompt_template:t,commit_message:r}=e;if(r&&r.length>72)throw new Error("Commit message must be less than 72 characters.");if(!(t instanceof Object))throw new Error("Please provide a JSON prompt template.");return G(e)};var J={};d(J,{get:()=>ye,publish:()=>fe});var ye=(e,t)=>x(e,t),fe=e=>E(e);var Y={};d(Y,{group:()=>we,metadata:()=>Pe,prompt:()=>ge,score:()=>de});var Pe=e=>{if(!(e.metadata instanceof Object))throw new Error("Please provide a dictionary of metadata.");for(let[t,r]of Object.entries(e.metadata))if(typeof t!="string"||typeof r!="string")throw new Error("Please provide a dictionary of metadata with key value pair of strings.");return I(e)},de=e=>{if(typeof e.score!="number")throw new Error("Score must be a number");if(e.score<0||e.score>100)throw new Error("Score must be a number between 0 and 100.");return $(e)},ge=e=>{if(!(e.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return O(e)},we=e=>W(e);var k=new Proxy({OpenAI:{},Anthropic:{},api_key:process.env.PROMPTLAYER_API_KEY,utils:q,track:Y,groups:v,prompts:C,templates:J},{get:(e,t,r)=>{if(["OpenAI","Anthropic"].includes(t.toString())){let a=F(t==="OpenAI"?"openai":"@anthropic-ai/sdk").default;return ee(a,t.toString().toLowerCase(),t.toString().toLowerCase())}return Reflect.get(e,t,r)}});export{k as promptlayer};
1
+ var z=Object.defineProperty,ae=Object.defineProperties;var ne=Object.getOwnPropertyDescriptors;var X=Object.getOwnPropertySymbols;var se=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var D=(e,t)=>{if(t=Symbol[e])return t;throw Error("Symbol."+e+" is not defined")};var H=(e,t,r)=>t in e?z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t)=>{for(var r in t||(t={}))se.call(t,r)&&H(e,r,t[r]);if(X)for(var r of X(t))pe.call(t,r)&&H(e,r,t[r]);return e},f=(e,t)=>ae(e,ne(t));var F=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var g=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})};var l=(e,t,r)=>new Promise((o,a)=>{var p=n=>{try{i(r.next(n))}catch(s){a(s)}},c=n=>{try{i(r.throw(n))}catch(s){a(s)}},i=n=>n.done?o(n.value):Promise.resolve(n.value).then(p,c);i((r=r.apply(e,t)).next())}),d=function(e,t){this[0]=e,this[1]=t},Q=(e,t,r)=>{var o=(c,i,n,s)=>{try{var w=r[c](i),T=(i=w.value)instanceof d,_=w.done;Promise.resolve(T?i[0]:i).then(y=>T?o(c==="return"?c:"next",i[1]?{done:y.done,value:y.value}:y,n,s):n({value:y,done:_})).catch(y=>o("throw",y,n,s))}catch(y){s(y)}},a=c=>p[c]=i=>new Promise((n,s)=>o(c,i,n,s)),p={};return r=r.apply(e,t),p[Symbol.asyncIterator]=()=>p,a("next"),a("throw"),a("return"),p};var V=(e,t,r)=>(t=e[D("asyncIterator")])?t.call(e):(e=e[D("iterator")](),t={},r=(o,a)=>(a=e[o])&&(t[o]=p=>new Promise((c,i,n)=>(p=a.call(e,p),n=p.done,Promise.resolve(p.value).then(s=>c({value:s,done:n}),i)))),r("next"),r("return"),t);var v={};g(v,{create:()=>le});var q={};g(q,{getApiKey:()=>m,getPromptTemplate:()=>x,promptLayerAllPromptTemplates:()=>A,promptLayerApiRequest:()=>R,promptLayerCreateGroup:()=>j,promptLayerGetPrompt:()=>$,promptLayerPublishPrompt:()=>S,promptLayerTrackGroup:()=>W,promptLayerTrackMetadata:()=>G,promptLayerTrackPrompt:()=>O,promptLayerTrackScore:()=>I,promptlayerApiHandler:()=>N,publishPromptTemplate:()=>E});var h="https://api.promptlayer.com",m=()=>{if(k.api_key===void 0)throw new Error("Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' ");return k.api_key},N=e=>l(void 0,null,function*(){return e.request_response[Symbol.asyncIterator]!==void 0?ce(e.request_response,e):yield R(e)}),R=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/track-request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=yield t.json();if(t.status!==200&&P(r,"WARNING: While logging your request, PromptLayer experienced the following error:"),r&&e.return_pl_id)return[e.request_response,r.request_id]}catch(t){console.warn(`WARNING: While logging your request PromptLayer had the following error: ${t}`)}return e.request_response}),A=e=>l(void 0,null,function*(){let t=new URL(`${h}/rest/prompts`);Object.entries(e||{}).forEach(([r,o])=>t.searchParams.append(r,o));try{let r=yield fetch(t,{method:"GET",headers:{"Content-Type":"application/json","X-API-KEY":m()}}),o=yield r.json();return r.status!==200&&console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(o)}`),o}catch(r){console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${r}`)}}),$=e=>l(void 0,null,function*(){var p,c,i;let t={prompt_name:e.prompt_name,version:(c=(p=e.version)==null?void 0:p.toString())!=null?c:"",label:(i=e.label)!=null?i:""},r=new URL(`${h}/library-get-prompt-template`);r.search=new URLSearchParams(t).toString();let o;try{o=yield fetch(r.toString(),{method:"GET",headers:{"X-API-KEY":m()}})}catch(n){throw new Error(`PromptLayer had the following error while getting your prompt: ${n}`)}let a=yield o.json();return o.status!==200&&Z(a,"PromptLayer had the following error while retrieving your prompt template"),a}),S=e=>l(void 0,null,function*(){let t;try{t=yield fetch(`${h}/library-publish-prompt-template`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))})}catch(o){throw new Error(`PromptLayer had the following error while publishing your prompt template: ${o}`)}let r=yield t.json();return t.status!==200&&Z(r,"PromptLayer had the following error while publishing your prompt"),!0}),G=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-metadata`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While logging metadata to your request, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${t}`),!1}return!0}),I=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-score`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While scoring your request, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While scoring your request, PromptLayer experienced the following error: ${t}`),!1}return!0}),O=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${t}`),!1}return!0}),W=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/track-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While associating your request with a group, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While associating your request with a group, PromptLayer experienced the following error: ${t}`),!1}return!0}),j=()=>l(void 0,null,function*(){try{let e=yield fetch(`${h}/create-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:m()})}),t=yield e.json();return e.status!==200?(P(t,"WARNING: While creating a group PromptLayer had the following error"),!1):t.id}catch(e){return console.warn(`WARNING: While creating a group PromptLayer had the following error: ${e}`),!1}}),x=(e,t)=>l(void 0,null,function*(){try{let r=new URL(`${h}/prompt-templates/${e}`),o=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify(f(u({},t),{api_key:m()}))}),a=yield o.json();return o.status!==200?(P(a,"WARNING: While fetching a prompt template PromptLayer had the following error"),null):a}catch(r){return console.warn(`WARNING: While fetching a prompt template PromptLayer had the following error: ${r}`),null}}),E=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/rest/prompt-templates`,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify({prompt_template:u({},e),prompt_version:u({},e)})}),r=yield t.json();return t.status===400&&P(r,"WARNING: While publishing a prompt template PromptLayer had the following error"),r}catch(t){console.warn(`WARNING: While publishing a prompt template PromptLayer had the following error: ${t}`)}}),ie=e=>{if("completion"in e[0])return e.reduce((t,r)=>f(u({},r),{completion:`${t.completion}${r.completion}`}),{});if("text"in e[0].choices[0]){let t="";for(let o of e)t=`${t}${o.choices[0].text}`;let r=structuredClone(e.at(-1));return r.choices[0].text=t,r}if("delta"in e[0].choices[0]){let t=!1,r=!1,o="",a="",p={role:"",content:""};for(let i of e){let n=i.choices[0].delta;if(Object.keys(n).length!==0){if("function_call"in n){t=!0;let s=n.function_call;s.name&&(o=s.name),a=`${a}${s.arguments}`}if("tool_calls"in n){r=!0;let s=n.tool_calls[0].function;s.name&&(o=s.name),a=`${a}${s.arguments}`}}"role"in n&&(p.role=n.role),"content"in n&&(p.content=`${p.content}${n.content}`)}t&&(p.function_call={name:o,arguments:a}),r&&(p.tool_calls=[{type:"function",function:{name:o,arguments:a}}]);let c=structuredClone(e.at(-1));return c.choices[0]=p,c}return""};function ce(e,t){return Q(this,null,function*(){let r=[];try{for(var p=V(e),c,i,n;c=!(i=yield new d(p.next())).done;c=!1){let s=i.value;yield s,r.push(s)}}catch(i){n=[i]}finally{try{c&&(i=p.return)&&(yield new d(i.call(p)))}finally{if(n)throw n[0]}}let o=ie(r);yield yield new d(R(f(u({},t),{request_response:o,request_end_time:new Date().toISOString()})))})}var P=(e,t)=>{try{console.warn(`${t}: ${e.message}`)}catch(r){console.warn(`${t}: ${e}`)}},Z=(e,t)=>{throw"message"in e?new Error(`${t}: ${e.message}`):new Error(`${t}: ${e.message}`)};var le=()=>l(void 0,null,function*(){return yield j()});var ee=(e,t="",r="openai")=>{let o={construct:(a,p)=>{let c=Reflect.construct(a,p);return Object.defineProperties(c,{function_name:{value:t,writable:!0},provider:{value:r}}),new Proxy(c,o)},get:(a,p,c)=>{let i=a[p],n=`${Reflect.get(a,"function_name")}.${p.toString()}`;return typeof i=="object"?(Object.defineProperties(i,{function_name:{value:n,writable:!0},provider:{value:r}}),new Proxy(i,o)):typeof i=="function"?(...s)=>{var K,M,U,B;let w=new Date().toISOString(),T=Reflect.get(a,"provider"),_=(K=s[0])==null?void 0:K.return_pl_id,y=(M=s[0])==null?void 0:M.pl_tags;(U=s[0])==null||delete U.return_pl_id,(B=s[0])==null||delete B.pl_tags;let b=Reflect.apply(i,a,s);return b instanceof Promise?new Promise((te,re)=>{b.then(L=>l(void 0,null,function*(){let oe=yield N({api_key:m(),provider_type:T,function_name:n,request_start_time:w,request_end_time:new Date().toISOString(),request_response:L,kwargs:s[0],return_pl_id:_,tags:y});te(oe)})).catch(L=>{re(L)})}):b}:Reflect.get(a,p,c)}};return new Proxy(e,o)};var C={};g(C,{all:()=>me,get:()=>ue,publish:()=>he});var me=e=>A(e),ue=e=>l(void 0,null,function*(){let t=yield $(e),r=t.prompt_template,o=t.metadata;return{prompt_template:r,metadata:o}}),he=e=>{let{prompt_template:t,commit_message:r}=e;if(r&&r.length>72)throw new Error("Commit message must be less than 72 characters.");if(!(t instanceof Object))throw new Error("Please provide a JSON prompt template.");return S(e)};var J={};g(J,{get:()=>ye,publish:()=>fe});var ye=(e,t)=>x(e,t),fe=e=>E(e);var Y={};g(Y,{group:()=>we,metadata:()=>Pe,prompt:()=>de,score:()=>ge});var Pe=e=>{if(!(e.metadata instanceof Object))throw new Error("Please provide a dictionary of metadata.");for(let[t,r]of Object.entries(e.metadata))if(typeof t!="string"||typeof r!="string")throw new Error("Please provide a dictionary of metadata with key value pair of strings.");return G(e)},ge=e=>{if(typeof e.score!="number")throw new Error("Score must be a number");if(e.score<0||e.score>100)throw new Error("Score must be a number between 0 and 100.");return I(e)},de=e=>{if(!(e.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return O(e)},we=e=>W(e);var k=new Proxy({OpenAI:{},Anthropic:{},api_key:process.env.PROMPTLAYER_API_KEY,utils:q,track:Y,groups:v,prompts:C,templates:J},{get:(e,t,r)=>{if(["OpenAI","Anthropic"].includes(t.toString())){let a=F(t==="OpenAI"?"openai":"@anthropic-ai/sdk").default;return ee(a,t.toString().toLowerCase(),t.toString().toLowerCase())}return Reflect.get(e,t,r)}});export{k as promptlayer};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/groups.ts","../../src/utils.ts","../../src/promptlayer.ts","../../src/prompts.ts","../../src/templates.ts","../../src/track.ts","../../src/index.ts"],"sourcesContent":["import { promptLayerCreateGroup } from \"@/utils\";\n\nconst create = async (): Promise<number | boolean> =>\n await promptLayerCreateGroup();\n\nexport { create };\n","import { promptlayer } from \"@/index\";\nimport {\n GetPromptTemplate,\n GetPromptTemplateParams,\n LegacyPublishPromptTemplate,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n} from \"@/types\";\n\nconst URL_API_PROMPTLAYER = \"https://api.promptlayer.com\";\n\nconst getApiKey = () => {\n if (promptlayer.api_key === undefined) {\n throw new Error(\n \"Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' \"\n );\n } else {\n return promptlayer.api_key;\n }\n};\n\nconst promptlayerApiHandler = async <Item>(\n body: TrackRequest & {\n request_response: AsyncIterable<Item> | any;\n }\n) => {\n const isGenerator = body.request_response[Symbol.asyncIterator] !== undefined;\n if (isGenerator) {\n return proxyGenerator(body.request_response, body);\n }\n return await promptLayerApiRequest(body);\n};\n\nconst promptLayerApiRequest = async (body: TrackRequest) => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-request`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n if (data && body.return_pl_id) {\n return [body.request_response, data.request_id];\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return body.request_response;\n};\n\nconst promptLayerAllPromptTemplates = async (params?: Pagination) => {\n const url = new URL(`${URL_API_PROMPTLAYER}/rest/prompts`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value)\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n });\n const data = await response.json();\n if (response.status !== 200) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(\n data\n )}`\n );\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${e}`\n );\n }\n};\n\n/**\n * Get a prompt from the PromptLayer library\n * @param prompt_name name of the prompt to get\n * @param api_key your api key\n * @param version version of the prompt to get, None for latest\n * @param label The release label of a prompt you want to get. Setting this will supercede version\n */\nconst promptLayerGetPrompt = async (body: GetPromptTemplate) => {\n const params: Record<string, string> = {\n prompt_name: body.prompt_name,\n version: body.version?.toString() ?? \"\",\n label: body.label ?? \"\",\n };\n const url = new URL(`${URL_API_PROMPTLAYER}/library-get-prompt-template`);\n url.search = new URLSearchParams(params).toString();\n let response: Response;\n try {\n response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"X-API-KEY\": getApiKey(),\n },\n });\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while getting your prompt: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while retrieving your prompt template`\n );\n }\n return data;\n};\n\nconst promptLayerPublishPrompt = async (\n body: LegacyPublishPromptTemplate\n): Promise<boolean> => {\n let response: Response;\n try {\n response = await fetch(\n `${URL_API_PROMPTLAYER}/library-publish-prompt-template`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while publishing your prompt template: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while publishing your prompt`\n );\n }\n return true;\n};\n\nconst promptLayerTrackMetadata = async (\n body: TrackMetadata\n): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-metadata`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging metadata to your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackScore = async (body: TrackScore): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/library-track-score`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While scoring your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackPrompt = async (body: TrackPrompt): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-prompt`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackGroup = async (body: TrackGroup): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a group, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerCreateGroup = async (): Promise<number | boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/create-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While creating a group PromptLayer had the following error\"\n );\n return false;\n }\n return data.id;\n } catch (e) {\n console.warn(\n `WARNING: While creating a group PromptLayer had the following error: ${e}`\n );\n return false;\n }\n};\n\nconst getPromptTemplate = async (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => {\n try {\n const url = new URL(\n `${URL_API_PROMPTLAYER}/prompt-templates/${promptName}`\n );\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({ ...params, api_key: getApiKey() }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While fetching a prompt template PromptLayer had the following error\"\n );\n return null;\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst publishPromptTemplate = async (body: PublishPromptTemplate) => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/rest/prompt-templates`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({\n prompt_template: { ...body },\n prompt_version: { ...body },\n }),\n }\n );\n const data = await response.json();\n if (response.status === 400) {\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a prompt template PromptLayer had the following error\"\n );\n }\n return data as Promise<PublishPromptTemplateResponse>;\n } catch (e) {\n console.warn(\n `WARNING: While publishing a prompt template PromptLayer had the following error: ${e}`\n );\n }\n};\n\nconst cleaned_result = (results: any[]) => {\n if (\"completion\" in results[0])\n return results.reduce(\n (prev, current) => ({\n ...current,\n completion: `${prev.completion}${current.completion}`,\n }),\n {}\n );\n if (\"text\" in results[0].choices[0]) {\n let response = \"\";\n for (const result of results) {\n response = `${response}${result.choices[0].text}`;\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0].text = response;\n return final_result;\n } else if (\"delta\" in results[0].choices[0]) {\n let response = { role: \"\", content: \"\" };\n for (const result of results) {\n if (\"role\" in result.choices[0].delta) {\n response.role = result.choices[0].delta.role;\n }\n if (\"content\" in result.choices[0].delta) {\n response.content = `${response[\"content\"]}${result.choices[0].delta.content}`;\n }\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0] = response;\n return final_result;\n }\n return \"\";\n};\n\nasync function* proxyGenerator<Item>(\n generator: AsyncIterable<Item>,\n body: TrackRequest\n) {\n const results = [];\n for await (const value of generator) {\n yield value;\n results.push(value);\n }\n const request_response = cleaned_result(results);\n const response = await promptLayerApiRequest({\n ...body,\n request_response,\n request_end_time: new Date().toISOString(),\n });\n yield response;\n}\n\nconst warnOnBadResponse = (request_response: any, main_message: string) => {\n try {\n console.warn(`${main_message}: ${request_response.message}`);\n } catch (e) {\n console.warn(`${main_message}: ${request_response}`);\n }\n};\n\nconst throwOnBadResponse = (request_response: any, main_message: string) => {\n if (\"message\" in request_response) {\n throw new Error(`${main_message}: ${request_response.message}`);\n }\n throw new Error(`${main_message}: ${request_response.message}`);\n};\n\nexport {\n getApiKey,\n getPromptTemplate,\n promptLayerAllPromptTemplates,\n promptLayerApiRequest,\n promptLayerCreateGroup,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n promptlayerApiHandler,\n publishPromptTemplate,\n};\n","import { getApiKey, promptlayerApiHandler } from \"@/utils\";\n\nexport const promptLayerBase = (\n llm: object,\n function_name = \"\",\n provider = \"openai\"\n) => {\n const handler: ProxyHandler<any> = {\n construct: (target, args) => {\n const newTarget = Reflect.construct(target, args);\n Object.defineProperties(newTarget, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(newTarget, handler);\n },\n get: (target, prop, receiver) => {\n const value = target[prop];\n const function_name = `${Reflect.get(\n target,\n \"function_name\"\n )}.${prop.toString()}`;\n if (typeof value === \"object\") {\n Object.defineProperties(value, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(value, handler);\n }\n if (typeof value === \"function\") {\n return (...args: any[]) => {\n const request_start_time = new Date().toISOString();\n const provider_type = Reflect.get(target, \"provider\");\n const return_pl_id = args[0]?.return_pl_id;\n const pl_tags = args[0]?.pl_tags;\n delete args[0]?.return_pl_id;\n delete args[0]?.pl_tags;\n const response = Reflect.apply(value, target, args);\n if (response instanceof Promise) {\n return new Promise((resolve, reject) => {\n response\n .then(async (request_response) => {\n const response = await promptlayerApiHandler({\n api_key: getApiKey(),\n provider_type,\n function_name,\n request_start_time,\n request_end_time: new Date().toISOString(),\n request_response,\n kwargs: args[0],\n return_pl_id,\n tags: pl_tags,\n });\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n return response;\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n };\n return new Proxy(llm, handler);\n};\n","import {\n GetPromptTemplate,\n LegacyPromptTemplate,\n LegacyPublishPromptTemplate,\n Pagination,\n} from \"@/types\";\nimport {\n promptLayerAllPromptTemplates,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n} from \"@/utils\";\n\n/**\n * @description List all prompts on PromptLayer.\n * @param params\n */\nexport const all = (params?: Pagination) =>\n promptLayerAllPromptTemplates(params);\n/**\n * Get a prompt template from PromptLayer.\n */\nconst getPrompt = async (\n params: GetPromptTemplate\n): Promise<LegacyPromptTemplate> => {\n const prompt = await promptLayerGetPrompt(params);\n const prompt_template = prompt[\"prompt_template\"];\n const metadata = prompt[\"metadata\"];\n return {\n prompt_template,\n metadata,\n };\n};\n\nconst publishPrompt = (body: LegacyPublishPromptTemplate): Promise<boolean> => {\n const { prompt_template, commit_message } = body;\n if (commit_message && commit_message.length > 72) {\n throw new Error(\"Commit message must be less than 72 characters.\");\n }\n if (!(prompt_template instanceof Object)) {\n throw new Error(\"Please provide a JSON prompt template.\");\n }\n return promptLayerPublishPrompt(body);\n};\n\nexport { getPrompt as get, publishPrompt as publish };\n","import { GetPromptTemplateParams, PublishPromptTemplate } from \"@/types\";\nimport { getPromptTemplate, publishPromptTemplate } from \"@/utils\";\n\nexport const get = (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => getPromptTemplate(promptName, params);\n\nexport const publish = (body: PublishPromptTemplate) =>\n publishPromptTemplate(body);\n","import { TrackGroup, TrackMetadata, TrackPrompt, TrackScore } from \"@/types\";\nimport {\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n} from \"@/utils\";\n\nconst metadata = (body: TrackMetadata): Promise<boolean> => {\n if (!(body.metadata instanceof Object)) {\n throw new Error(\"Please provide a dictionary of metadata.\");\n }\n for (const [key, value] of Object.entries(body.metadata)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Please provide a dictionary of metadata with key value pair of strings.\"\n );\n }\n }\n return promptLayerTrackMetadata(body);\n};\n\nconst score = (body: TrackScore): Promise<boolean> => {\n if (typeof body.score !== \"number\") {\n throw new Error(\"Score must be a number\");\n }\n if (body.score < 0 || body.score > 100) {\n throw new Error(\"Score must be a number between 0 and 100.\");\n }\n return promptLayerTrackScore(body);\n};\n\nconst prompt = (body: TrackPrompt): Promise<boolean> => {\n if (!(body.prompt_input_variables instanceof Object)) {\n throw new Error(\"Prompt template input variable dictionary not provided.\");\n }\n return promptLayerTrackPrompt(body);\n};\n\nconst group = (body: TrackGroup) => promptLayerTrackGroup(body);\n\nexport { group, metadata, prompt, score };\n","import * as groups from \"@/groups\";\nimport { promptLayerBase } from \"@/promptlayer\";\nimport * as prompts from \"@/prompts\";\nimport * as templates from \"@/templates\";\nimport * as track from \"@/track\";\nimport * as utils from \"@/utils\";\n\nexport const promptlayer = new Proxy<{\n OpenAI: any;\n Anthropic: any;\n api_key: string | undefined;\n utils: typeof utils;\n track: typeof track;\n groups: typeof groups;\n prompts: typeof prompts;\n templates: typeof templates;\n}>(\n {\n OpenAI: {},\n Anthropic: {},\n api_key: process.env.PROMPTLAYER_API_KEY,\n utils,\n track,\n groups,\n prompts,\n templates,\n },\n {\n get: (target, prop, receiver) => {\n if ([\"OpenAI\", \"Anthropic\"].includes(prop.toString())) {\n const moduleName = prop === \"OpenAI\" ? \"openai\" : \"@anthropic-ai/sdk\";\n const module = require(moduleName).default;\n return promptLayerBase(\n module,\n prop.toString().toLowerCase(),\n prop.toString().toLowerCase()\n );\n }\n return Reflect.get(target, prop, receiver);\n },\n }\n);\n"],"mappings":"+rDAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,YAAAE,KCAA,IAAAC,EAAA,GAAAC,EAAAD,EAAA,eAAAE,EAAA,sBAAAC,EAAA,kCAAAC,EAAA,0BAAAC,EAAA,2BAAAC,EAAA,yBAAAC,EAAA,6BAAAC,EAAA,0BAAAC,EAAA,6BAAAC,EAAA,2BAAAC,EAAA,0BAAAC,EAAA,0BAAAC,EAAA,0BAAAC,IAeA,IAAMC,EAAsB,8BAEtBC,EAAY,IAAM,CACtB,GAAIC,EAAY,UAAY,OAC1B,MAAM,IAAI,MACR,+HACF,EAEA,OAAOA,EAAY,OAEvB,EAEMC,EACJC,GAGGC,EAAA,wBAEH,OADoBD,EAAK,iBAAiB,OAAO,aAAa,IAAM,OAE3DE,GAAeF,EAAK,iBAAkBA,CAAI,EAE5C,MAAMG,EAAsBH,CAAI,CACzC,GAEMG,EAA+BH,GAAuBC,EAAA,wBAC1D,GAAI,CACF,IAAMG,EAAW,MAAM,MAAM,GAAGR,CAAmB,iBAAkB,CACnE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUI,CAAI,CAC3B,CAAC,EACKK,EAAO,MAAMD,EAAS,KAAK,EAOjC,GANIA,EAAS,SAAW,KACtBE,EACED,EACA,mFACF,EAEEA,GAAQL,EAAK,aACf,MAAO,CAACA,EAAK,iBAAkBK,EAAK,UAAU,CAElD,OAASE,EAAG,CACV,QAAQ,KACN,4EAA4EA,CAAC,EAC/E,CACF,CACA,OAAOP,EAAK,gBACd,GAEMQ,EAAuCC,GAAwBR,EAAA,wBACnE,IAAMS,EAAM,IAAI,IAAI,GAAGd,CAAmB,eAAe,EACzD,OAAO,QAAQa,GAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAACE,EAAKC,CAAK,IAC/CF,EAAI,aAAa,OAAOC,EAAKC,CAAK,CACpC,EACA,GAAI,CACF,IAAMR,EAAW,MAAM,MAAMM,EAAK,CAChC,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,YAAab,EAAU,CACzB,CACF,CAAC,EACKQ,EAAO,MAAMD,EAAS,KAAK,EACjC,OAAIA,EAAS,SAAW,KACtB,QAAQ,KACN,sFAAsF,KAAK,UACzFC,CACF,CAAC,EACH,EAEKA,CACT,OAASE,EAAG,CACV,QAAQ,KACN,sFAAsFA,CAAC,EACzF,CACF,CACF,GASMM,EAA8Bb,GAA4BC,EAAA,wBAtGhE,IAAAa,EAAAC,EAAAC,EAuGE,IAAMP,EAAiC,CACrC,YAAaT,EAAK,YAClB,SAASe,GAAAD,EAAAd,EAAK,UAAL,YAAAc,EAAc,aAAd,KAAAC,EAA4B,GACrC,OAAOC,EAAAhB,EAAK,QAAL,KAAAgB,EAAc,EACvB,EACMN,EAAM,IAAI,IAAI,GAAGd,CAAmB,8BAA8B,EACxEc,EAAI,OAAS,IAAI,gBAAgBD,CAAM,EAAE,SAAS,EAClD,IAAIL,EACJ,GAAI,CACFA,EAAW,MAAM,MAAMM,EAAI,SAAS,EAAG,CACrC,OAAQ,MACR,QAAS,CACP,YAAab,EAAU,CACzB,CACF,CAAC,CACH,OAASU,EAAG,CACV,MAAM,IAAI,MACR,kEAAkEA,CAAC,EACrE,CACF,CACA,IAAMF,EAAO,MAAMD,EAAS,KAAK,EACjC,OAAIA,EAAS,SAAW,KACtBa,EACEZ,EACA,2EACF,EAEKA,CACT,GAEMa,EACJlB,GACqBC,EAAA,wBACrB,IAAIG,EACJ,GAAI,CACFA,EAAW,MAAM,MACf,GAAGR,CAAmB,mCACtB,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUuB,EAAAC,EAAA,GAChBpB,GADgB,CAEnB,QAASH,EAAU,CACrB,EAAC,CACH,CACF,CACF,OAASU,EAAG,CACV,MAAM,IAAI,MACR,8EAA8EA,CAAC,EACjF,CACF,CACA,IAAMF,EAAO,MAAMD,EAAS,KAAK,EACjC,OAAIA,EAAS,SAAW,KACtBa,EACEZ,EACA,kEACF,EAEK,EACT,GAEMgB,EACJrB,GACqBC,EAAA,wBACrB,GAAI,CACF,IAAMG,EAAW,MAAM,MACrB,GAAGR,CAAmB,0BACtB,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUuB,EAAAC,EAAA,GAChBpB,GADgB,CAEnB,QAASH,EAAU,CACrB,EAAC,CACH,CACF,EACMQ,EAAO,MAAMD,EAAS,KAAK,EACjC,GAAIA,EAAS,SAAW,IACtB,OAAAE,EACED,EACA,8FACF,EACO,EAEX,OAASE,EAAG,CACV,eAAQ,KACN,iGAAiGA,CAAC,EACpG,EACO,EACT,CACA,MAAO,EACT,GAEMe,EAA+BtB,GAAuCC,EAAA,wBAC1E,GAAI,CACF,IAAMG,EAAW,MAAM,MAAM,GAAGR,CAAmB,uBAAwB,CACzE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUuB,EAAAC,EAAA,GAChBpB,GADgB,CAEnB,QAASH,EAAU,CACrB,EAAC,CACH,CAAC,EACKQ,EAAO,MAAMD,EAAS,KAAK,EACjC,GAAIA,EAAS,SAAW,IACtB,OAAAE,EACED,EACA,kFACF,EACO,EAEX,OAASE,EAAG,CACV,eAAQ,KACN,qFAAqFA,CAAC,EACxF,EACO,EACT,CACA,MAAO,EACT,GAEMgB,EAAgCvB,GAAwCC,EAAA,wBAC5E,GAAI,CACF,IAAMG,EAAW,MAAM,MACrB,GAAGR,CAAmB,wBACtB,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUuB,EAAAC,EAAA,GAChBpB,GADgB,CAEnB,QAASH,EAAU,CACrB,EAAC,CACH,CACF,EACMQ,EAAO,MAAMD,EAAS,KAAK,EACjC,GAAIA,EAAS,SAAW,IACtB,OAAAE,EACED,EACA,6GACF,EACO,EAEX,OAASE,EAAG,CACV,eAAQ,KACN,gHAAgHA,CAAC,EACnH,EACO,EACT,CACA,MAAO,EACT,GAEMiB,EAA+BxB,GAAuCC,EAAA,wBAC1E,GAAI,CACF,IAAMG,EAAW,MAAM,MAAM,GAAGR,CAAmB,eAAgB,CACjE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUuB,EAAAC,EAAA,GAChBpB,GADgB,CAEnB,QAASH,EAAU,CACrB,EAAC,CACH,CAAC,EACKQ,EAAO,MAAMD,EAAS,KAAK,EACjC,GAAIA,EAAS,SAAW,IACtB,OAAAE,EACED,EACA,mGACF,EACO,EAEX,OAASE,EAAG,CACV,eAAQ,KACN,sGAAsGA,CAAC,EACzG,EACO,EACT,CACA,MAAO,EACT,GAEMkB,EAAyB,IAAuCxB,EAAA,wBACpE,GAAI,CACF,IAAMG,EAAW,MAAM,MAAM,GAAGR,CAAmB,gBAAiB,CAClE,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,QAASC,EAAU,CACrB,CAAC,CACH,CAAC,EACKQ,EAAO,MAAMD,EAAS,KAAK,EACjC,OAAIA,EAAS,SAAW,KACtBE,EACED,EACA,qEACF,EACO,IAEFA,EAAK,EACd,OAAS,EAAG,CACV,eAAQ,KACN,wEAAwE,CAAC,EAC3E,EACO,EACT,CACF,GAEMqB,EAAoB,CACxBC,EACAlB,IACGR,EAAA,wBACH,GAAI,CACF,IAAMS,EAAM,IAAI,IACd,GAAGd,CAAmB,qBAAqB+B,CAAU,EACvD,EACMvB,EAAW,MAAM,MAAMM,EAAK,CAChC,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,YAAab,EAAU,CACzB,EACA,KAAM,KAAK,UAAUsB,EAAAC,EAAA,GAAKX,GAAL,CAAa,QAASZ,EAAU,CAAE,EAAC,CAC1D,CAAC,EACKQ,EAAO,MAAMD,EAAS,KAAK,EACjC,OAAIA,EAAS,SAAW,KACtBE,EACED,EACA,+EACF,EACO,MAEFA,CACT,OAASE,EAAG,CACV,eAAQ,KACN,kFAAkFA,CAAC,EACrF,EACO,IACT,CACF,GAEMqB,EAA+B5B,GAAgCC,EAAA,wBACnE,GAAI,CACF,IAAMG,EAAW,MAAM,MACrB,GAAGR,CAAmB,yBACtB,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,YAAaC,EAAU,CACzB,EACA,KAAM,KAAK,UAAU,CACnB,gBAAiBuB,EAAA,GAAKpB,GACtB,eAAgBoB,EAAA,GAAKpB,EACvB,CAAC,CACH,CACF,EACMK,EAAO,MAAMD,EAAS,KAAK,EACjC,OAAIA,EAAS,SAAW,KACtBE,EACED,EACA,iFACF,EAEKA,CACT,OAASE,EAAG,CACV,QAAQ,KACN,oFAAoFA,CAAC,EACvF,CACF,CACF,GAEMsB,GAAkBC,GAAmB,CACzC,GAAI,eAAgBA,EAAQ,CAAC,EAC3B,OAAOA,EAAQ,OACb,CAACC,EAAMC,IAAab,EAAAC,EAAA,GACfY,GADe,CAElB,WAAY,GAAGD,EAAK,UAAU,GAAGC,EAAQ,UAAU,EACrD,GACA,CAAC,CACH,EACF,GAAI,SAAUF,EAAQ,CAAC,EAAE,QAAQ,CAAC,EAAG,CACnC,IAAI1B,EAAW,GACf,QAAW6B,KAAUH,EACnB1B,EAAW,GAAGA,CAAQ,GAAG6B,EAAO,QAAQ,CAAC,EAAE,IAAI,GAEjD,IAAMC,EAAe,gBAAgBJ,EAAQ,GAAG,EAAE,CAAC,EACnD,OAAAI,EAAa,QAAQ,CAAC,EAAE,KAAO9B,EACxB8B,CACT,SAAW,UAAWJ,EAAQ,CAAC,EAAE,QAAQ,CAAC,EAAG,CAC3C,IAAI1B,EAAW,CAAE,KAAM,GAAI,QAAS,EAAG,EACvC,QAAW6B,KAAUH,EACf,SAAUG,EAAO,QAAQ,CAAC,EAAE,QAC9B7B,EAAS,KAAO6B,EAAO,QAAQ,CAAC,EAAE,MAAM,MAEtC,YAAaA,EAAO,QAAQ,CAAC,EAAE,QACjC7B,EAAS,QAAU,GAAGA,EAAS,OAAU,GAAG6B,EAAO,QAAQ,CAAC,EAAE,MAAM,OAAO,IAG/E,IAAMC,EAAe,gBAAgBJ,EAAQ,GAAG,EAAE,CAAC,EACnD,OAAAI,EAAa,QAAQ,CAAC,EAAI9B,EACnB8B,CACT,CACA,MAAO,EACT,EAEA,SAAgBhC,GACdiC,EACAnC,EACA,QAAAoC,EAAA,sBACA,IAAMN,EAAU,CAAC,EACjB,YAAAO,EAAAC,EAA0BH,GAA1BI,EAAAC,EAAAC,EAAAF,EAAA,EAAAC,EAAA,UAAAE,EAAAL,EAAA,cAAAE,EAAA,GACE,CADS,IAAM3B,EAAjB4B,EAAA,MACE,MAAM5B,EACNkB,EAAQ,KAAKlB,CAAK,SAFpB4B,EAraF,CAqaEC,EAAA,CAAAD,UAAA,KAAAD,IAAAC,EAAAH,EAAA,oBAAAK,EAAAF,EAAA,KAAAH,YAAA,IAAAI,EAAA,MAAAA,EAAA,IAIA,IAAME,EAAmBd,GAAeC,CAAO,EAM/C,MALiB,UAAAY,EAAMvC,EAAsBgB,EAAAC,EAAA,GACxCpB,GADwC,CAE3C,iBAAA2C,EACA,iBAAkB,IAAI,KAAK,EAAE,YAAY,CAC3C,EAAC,EAEH,GAEA,IAAMrC,EAAoB,CAACqC,EAAuBC,IAAyB,CACzE,GAAI,CACF,QAAQ,KAAK,GAAGA,CAAY,KAAKD,EAAiB,OAAO,EAAE,CAC7D,OAASpC,EAAG,CACV,QAAQ,KAAK,GAAGqC,CAAY,KAAKD,CAAgB,EAAE,CACrD,CACF,EAEM1B,EAAqB,CAAC0B,EAAuBC,IAAyB,CAC1E,KAAI,YAAaD,EACT,IAAI,MAAM,GAAGC,CAAY,KAAKD,EAAiB,OAAO,EAAE,EAE1D,IAAI,MAAM,GAAGC,CAAY,KAAKD,EAAiB,OAAO,EAAE,CAChE,ED7bA,IAAME,GAAS,IAAoCC,EAAA,wBACjD,aAAMC,EAAuB,IEDxB,IAAMC,GAAkB,CAC7BC,EACAC,EAAgB,GAChBC,EAAW,WACR,CACH,IAAMC,EAA6B,CACjC,UAAW,CAACC,EAAQC,IAAS,CAC3B,IAAMC,EAAY,QAAQ,UAAUF,EAAQC,CAAI,EAChD,cAAO,iBAAiBC,EAAW,CACjC,cAAe,CACb,MAAOL,EACP,SAAU,EACZ,EACA,SAAU,CACR,MAAOC,CACT,CACF,CAAC,EACM,IAAI,MAAMI,EAAWH,CAAO,CACrC,EACA,IAAK,CAACC,EAAQG,EAAMC,IAAa,CAC/B,IAAMC,EAAQL,EAAOG,CAAI,EACnBN,EAAgB,GAAG,QAAQ,IAC/BG,EACA,eACF,CAAC,IAAIG,EAAK,SAAS,CAAC,GACpB,OAAI,OAAOE,GAAU,UACnB,OAAO,iBAAiBA,EAAO,CAC7B,cAAe,CACb,MAAOR,EACP,SAAU,EACZ,EACA,SAAU,CACR,MAAOC,CACT,CACF,CAAC,EACM,IAAI,MAAMO,EAAON,CAAO,GAE7B,OAAOM,GAAU,WACZ,IAAIJ,IAAgB,CAxCnC,IAAAK,EAAAC,EAAAC,EAAAC,EAyCU,IAAMC,EAAqB,IAAI,KAAK,EAAE,YAAY,EAC5CC,EAAgB,QAAQ,IAAIX,EAAQ,UAAU,EAC9CY,GAAeN,EAAAL,EAAK,CAAC,IAAN,YAAAK,EAAS,aACxBO,GAAUN,EAAAN,EAAK,CAAC,IAAN,YAAAM,EAAS,SACzBC,EAAOP,EAAK,CAAC,IAAb,aAAAO,EAAgB,cAChBC,EAAOR,EAAK,CAAC,IAAb,aAAAQ,EAAgB,QAChB,IAAMK,EAAW,QAAQ,MAAMT,EAAOL,EAAQC,CAAI,EAClD,OAAIa,aAAoB,QACf,IAAI,QAAQ,CAACC,GAASC,KAAW,CACtCF,EACG,KAAYG,GAAqBC,EAAA,wBAChC,IAAMJ,GAAW,MAAMK,EAAsB,CAC3C,QAASC,EAAU,EACnB,cAAAT,EACA,cAAAd,EACA,mBAAAa,EACA,iBAAkB,IAAI,KAAK,EAAE,YAAY,EACzC,iBAAAO,EACA,OAAQhB,EAAK,CAAC,EACd,aAAAW,EACA,KAAMC,CACR,CAAC,EACDE,GAAQD,EAAQ,CAClB,EAAC,EACA,MAAOO,GAAU,CAChBL,GAAOK,CAAK,CACd,CAAC,CACL,CAAC,EAEIP,CACT,EAEK,QAAQ,IAAId,EAAQG,EAAMC,CAAQ,CAC3C,CACF,EACA,OAAO,IAAI,MAAMR,EAAKG,CAAO,CAC/B,EC7EA,IAAAuB,EAAA,GAAAC,EAAAD,EAAA,SAAAE,GAAA,QAAAC,GAAA,YAAAC,KAgBO,IAAMC,GAAOC,GAClBC,EAA8BD,CAAM,EAIhCE,GACJF,GACkCG,EAAA,wBAClC,IAAMC,EAAS,MAAMC,EAAqBL,CAAM,EAC1CM,EAAkBF,EAAO,gBACzBG,EAAWH,EAAO,SACxB,MAAO,CACL,gBAAAE,EACA,SAAAC,CACF,CACF,GAEMC,GAAiBC,GAAwD,CAC7E,GAAM,CAAE,gBAAAH,EAAiB,eAAAI,CAAe,EAAID,EAC5C,GAAIC,GAAkBA,EAAe,OAAS,GAC5C,MAAM,IAAI,MAAM,iDAAiD,EAEnE,GAAI,EAAEJ,aAA2B,QAC/B,MAAM,IAAI,MAAM,wCAAwC,EAE1D,OAAOK,EAAyBF,CAAI,CACtC,EC1CA,IAAAG,EAAA,GAAAC,EAAAD,EAAA,SAAAE,GAAA,YAAAC,KAGO,IAAMC,GAAM,CACjBC,EACAC,IACGC,EAAkBF,EAAYC,CAAM,EAE5BE,GAAWC,GACtBC,EAAsBD,CAAI,ECT5B,IAAAE,EAAA,GAAAC,EAAAD,EAAA,WAAAE,GAAA,aAAAC,GAAA,WAAAC,GAAA,UAAAC,KAQA,IAAMC,GAAYC,GAA0C,CAC1D,GAAI,EAAEA,EAAK,oBAAoB,QAC7B,MAAM,IAAI,MAAM,0CAA0C,EAE5D,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQF,EAAK,QAAQ,EACrD,GAAI,OAAOC,GAAQ,UAAY,OAAOC,GAAU,SAC9C,MAAM,IAAI,MACR,yEACF,EAGJ,OAAOC,EAAyBH,CAAI,CACtC,EAEMI,GAASJ,GAAuC,CACpD,GAAI,OAAOA,EAAK,OAAU,SACxB,MAAM,IAAI,MAAM,wBAAwB,EAE1C,GAAIA,EAAK,MAAQ,GAAKA,EAAK,MAAQ,IACjC,MAAM,IAAI,MAAM,2CAA2C,EAE7D,OAAOK,EAAsBL,CAAI,CACnC,EAEMM,GAAUN,GAAwC,CACtD,GAAI,EAAEA,EAAK,kCAAkC,QAC3C,MAAM,IAAI,MAAM,yDAAyD,EAE3E,OAAOO,EAAuBP,CAAI,CACpC,EAEMQ,GAASR,GAAqBS,EAAsBT,CAAI,EChCvD,IAAMU,EAAc,IAAI,MAU7B,CACE,OAAQ,CAAC,EACT,UAAW,CAAC,EACZ,QAAS,QAAQ,IAAI,oBACrB,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EACA,CACE,IAAK,CAACC,EAAQC,EAAMC,IAAa,CAC/B,GAAI,CAAC,SAAU,WAAW,EAAE,SAASD,EAAK,SAAS,CAAC,EAAG,CAErD,IAAME,EAASC,EADIH,IAAS,SAAW,SAAW,mBACjB,EAAE,QACnC,OAAOI,GACLF,EACAF,EAAK,SAAS,EAAE,YAAY,EAC5BA,EAAK,SAAS,EAAE,YAAY,CAC9B,CACF,CACA,OAAO,QAAQ,IAAID,EAAQC,EAAMC,CAAQ,CAC3C,CACF,CACF","names":["groups_exports","__export","create","utils_exports","__export","getApiKey","getPromptTemplate","promptLayerAllPromptTemplates","promptLayerApiRequest","promptLayerCreateGroup","promptLayerGetPrompt","promptLayerPublishPrompt","promptLayerTrackGroup","promptLayerTrackMetadata","promptLayerTrackPrompt","promptLayerTrackScore","promptlayerApiHandler","publishPromptTemplate","URL_API_PROMPTLAYER","getApiKey","promptlayer","promptlayerApiHandler","body","__async","proxyGenerator","promptLayerApiRequest","response","data","warnOnBadResponse","e","promptLayerAllPromptTemplates","params","url","key","value","promptLayerGetPrompt","_a","_b","_c","throwOnBadResponse","promptLayerPublishPrompt","__spreadProps","__spreadValues","promptLayerTrackMetadata","promptLayerTrackScore","promptLayerTrackPrompt","promptLayerTrackGroup","promptLayerCreateGroup","getPromptTemplate","promptName","publishPromptTemplate","cleaned_result","results","prev","current","result","final_result","generator","__asyncGenerator","iter","__forAwait","more","temp","error","__await","request_response","main_message","create","__async","promptLayerCreateGroup","promptLayerBase","llm","function_name","provider","handler","target","args","newTarget","prop","receiver","value","_a","_b","_c","_d","request_start_time","provider_type","return_pl_id","pl_tags","response","resolve","reject","request_response","__async","promptlayerApiHandler","getApiKey","error","prompts_exports","__export","all","getPrompt","publishPrompt","all","params","promptLayerAllPromptTemplates","getPrompt","__async","prompt","promptLayerGetPrompt","prompt_template","metadata","publishPrompt","body","commit_message","promptLayerPublishPrompt","templates_exports","__export","get","publish","get","promptName","params","getPromptTemplate","publish","body","publishPromptTemplate","track_exports","__export","group","metadata","prompt","score","metadata","body","key","value","promptLayerTrackMetadata","score","promptLayerTrackScore","prompt","promptLayerTrackPrompt","group","promptLayerTrackGroup","promptlayer","utils_exports","track_exports","groups_exports","prompts_exports","templates_exports","target","prop","receiver","module","__require","promptLayerBase"]}
1
+ {"version":3,"sources":["../../src/groups.ts","../../src/utils.ts","../../src/promptlayer.ts","../../src/prompts.ts","../../src/templates.ts","../../src/track.ts","../../src/index.ts"],"sourcesContent":["import { promptLayerCreateGroup } from \"@/utils\";\n\nconst create = async (): Promise<number | boolean> =>\n await promptLayerCreateGroup();\n\nexport { create };\n","import { promptlayer } from \"@/index\";\nimport {\n GetPromptTemplate,\n GetPromptTemplateParams,\n LegacyPublishPromptTemplate,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n} from \"@/types\";\n\nconst URL_API_PROMPTLAYER = \"https://api.promptlayer.com\";\n\nconst getApiKey = () => {\n if (promptlayer.api_key === undefined) {\n throw new Error(\n \"Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' \"\n );\n } else {\n return promptlayer.api_key;\n }\n};\n\nconst promptlayerApiHandler = async <Item>(\n body: TrackRequest & {\n request_response: AsyncIterable<Item> | any;\n }\n) => {\n const isGenerator = body.request_response[Symbol.asyncIterator] !== undefined;\n if (isGenerator) {\n return proxyGenerator(body.request_response, body);\n }\n return await promptLayerApiRequest(body);\n};\n\nconst promptLayerApiRequest = async (body: TrackRequest) => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-request`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n if (data && body.return_pl_id) {\n return [body.request_response, data.request_id];\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return body.request_response;\n};\n\nconst promptLayerAllPromptTemplates = async (params?: Pagination) => {\n const url = new URL(`${URL_API_PROMPTLAYER}/rest/prompts`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value)\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n });\n const data = await response.json();\n if (response.status !== 200) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(\n data\n )}`\n );\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${e}`\n );\n }\n};\n\n/**\n * Get a prompt from the PromptLayer library\n * @param prompt_name name of the prompt to get\n * @param api_key your api key\n * @param version version of the prompt to get, None for latest\n * @param label The release label of a prompt you want to get. Setting this will supercede version\n */\nconst promptLayerGetPrompt = async (body: GetPromptTemplate) => {\n const params: Record<string, string> = {\n prompt_name: body.prompt_name,\n version: body.version?.toString() ?? \"\",\n label: body.label ?? \"\",\n };\n const url = new URL(`${URL_API_PROMPTLAYER}/library-get-prompt-template`);\n url.search = new URLSearchParams(params).toString();\n let response: Response;\n try {\n response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"X-API-KEY\": getApiKey(),\n },\n });\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while getting your prompt: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while retrieving your prompt template`\n );\n }\n return data;\n};\n\nconst promptLayerPublishPrompt = async (\n body: LegacyPublishPromptTemplate\n): Promise<boolean> => {\n let response: Response;\n try {\n response = await fetch(\n `${URL_API_PROMPTLAYER}/library-publish-prompt-template`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while publishing your prompt template: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while publishing your prompt`\n );\n }\n return true;\n};\n\nconst promptLayerTrackMetadata = async (\n body: TrackMetadata\n): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-metadata`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging metadata to your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackScore = async (body: TrackScore): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/library-track-score`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While scoring your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackPrompt = async (body: TrackPrompt): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-prompt`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackGroup = async (body: TrackGroup): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a group, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerCreateGroup = async (): Promise<number | boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/create-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While creating a group PromptLayer had the following error\"\n );\n return false;\n }\n return data.id;\n } catch (e) {\n console.warn(\n `WARNING: While creating a group PromptLayer had the following error: ${e}`\n );\n return false;\n }\n};\n\nconst getPromptTemplate = async (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => {\n try {\n const url = new URL(\n `${URL_API_PROMPTLAYER}/prompt-templates/${promptName}`\n );\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({ ...params, api_key: getApiKey() }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While fetching a prompt template PromptLayer had the following error\"\n );\n return null;\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst publishPromptTemplate = async (body: PublishPromptTemplate) => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/rest/prompt-templates`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({\n prompt_template: { ...body },\n prompt_version: { ...body },\n }),\n }\n );\n const data = await response.json();\n if (response.status === 400) {\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a prompt template PromptLayer had the following error\"\n );\n }\n return data as Promise<PublishPromptTemplateResponse>;\n } catch (e) {\n console.warn(\n `WARNING: While publishing a prompt template PromptLayer had the following error: ${e}`\n );\n }\n};\n\nconst cleaned_result = (results: any[]) => {\n if (\"completion\" in results[0]) {\n return results.reduce(\n (prev, current) => ({\n ...current,\n completion: `${prev.completion}${current.completion}`,\n }),\n {}\n );\n }\n\n if (\"text\" in results[0].choices[0]) {\n let response = \"\";\n for (const result of results) {\n response = `${response}${result.choices[0].text}`;\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0].text = response;\n return final_result;\n }\n\n // Response was streamed\n if (\"delta\" in results[0].choices[0]) {\n let has_function_call = false;\n let has_tool_calls = false;\n let function_name = '';\n let function_arguments = '';\n let response: any = {role: \"\", content: \"\"};\n\n for (const result of results) {\n const delta = result.choices[0].delta\n\n if (Object.keys(delta).length !== 0) {\n\n // Function call (deprecated)\n if (\"function_call\" in delta) {\n has_function_call = true;\n const _function = delta[\"function_call\"]\n if (_function.name) function_name = _function.name\n function_arguments = `${function_arguments}${_function.arguments}`;\n }\n\n // Tool call\n if (\"tool_calls\" in delta) {\n has_tool_calls = true;\n const _function = delta.tool_calls[0].function\n if (_function.name) function_name = _function.name\n function_arguments = `${function_arguments}${_function.arguments}`;\n }\n\n }\n\n if (\"role\" in delta) {\n response.role = delta.role;\n }\n\n if (\"content\" in delta) {\n response.content = `${response[\"content\"]}${delta.content}`;\n }\n }\n\n if (has_function_call) {\n response['function_call'] = {\n 'name': function_name,\n 'arguments': function_arguments,\n }\n }\n\n if (has_tool_calls) {\n response['tool_calls'] = [\n {\n type: \"function\",\n function: {\n name: function_name,\n arguments: function_arguments,\n },\n }\n ]\n }\n\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0] = response;\n\n return final_result;\n }\n\n return \"\";\n};\n\nasync function* proxyGenerator<Item>(\n generator: AsyncIterable<Item>,\n body: TrackRequest\n) {\n const results = [];\n for await (const value of generator) {\n yield value;\n results.push(value);\n }\n const request_response = cleaned_result(results);\n const response = await promptLayerApiRequest({\n ...body,\n request_response,\n request_end_time: new Date().toISOString(),\n });\n yield response;\n}\n\nconst warnOnBadResponse = (request_response: any, main_message: string) => {\n try {\n console.warn(`${main_message}: ${request_response.message}`);\n } catch (e) {\n console.warn(`${main_message}: ${request_response}`);\n }\n};\n\nconst throwOnBadResponse = (request_response: any, main_message: string) => {\n if (\"message\" in request_response) {\n throw new Error(`${main_message}: ${request_response.message}`);\n }\n throw new Error(`${main_message}: ${request_response.message}`);\n};\n\nexport {\n getApiKey,\n getPromptTemplate,\n promptLayerAllPromptTemplates,\n promptLayerApiRequest,\n promptLayerCreateGroup,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n promptlayerApiHandler,\n publishPromptTemplate,\n};\n","import { getApiKey, promptlayerApiHandler } from \"@/utils\";\n\nexport const promptLayerBase = (\n llm: object,\n function_name = \"\",\n provider = \"openai\"\n) => {\n const handler: ProxyHandler<any> = {\n construct: (target, args) => {\n const newTarget = Reflect.construct(target, args);\n Object.defineProperties(newTarget, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(newTarget, handler);\n },\n get: (target, prop, receiver) => {\n const value = target[prop];\n const function_name = `${Reflect.get(\n target,\n \"function_name\"\n )}.${prop.toString()}`;\n if (typeof value === \"object\") {\n Object.defineProperties(value, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(value, handler);\n }\n if (typeof value === \"function\") {\n return (...args: any[]) => {\n const request_start_time = new Date().toISOString();\n const provider_type = Reflect.get(target, \"provider\");\n const return_pl_id = args[0]?.return_pl_id;\n const pl_tags = args[0]?.pl_tags;\n delete args[0]?.return_pl_id;\n delete args[0]?.pl_tags;\n const response = Reflect.apply(value, target, args);\n if (response instanceof Promise) {\n return new Promise((resolve, reject) => {\n response\n .then(async (request_response) => {\n const response = await promptlayerApiHandler({\n api_key: getApiKey(),\n provider_type,\n function_name,\n request_start_time,\n request_end_time: new Date().toISOString(),\n request_response,\n kwargs: args[0],\n return_pl_id,\n tags: pl_tags,\n });\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n return response;\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n };\n return new Proxy(llm, handler);\n};\n","import {\n GetPromptTemplate,\n LegacyPromptTemplate,\n LegacyPublishPromptTemplate,\n Pagination,\n} from \"@/types\";\nimport {\n promptLayerAllPromptTemplates,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n} from \"@/utils\";\n\n/**\n * @description List all prompts on PromptLayer.\n * @param params\n */\nexport const all = (params?: Pagination) =>\n promptLayerAllPromptTemplates(params);\n/**\n * Get a prompt template from PromptLayer.\n */\nconst getPrompt = async (\n params: GetPromptTemplate\n): Promise<LegacyPromptTemplate> => {\n const prompt = await promptLayerGetPrompt(params);\n const prompt_template = prompt[\"prompt_template\"];\n const metadata = prompt[\"metadata\"];\n return {\n prompt_template,\n metadata,\n };\n};\n\nconst publishPrompt = (body: LegacyPublishPromptTemplate): Promise<boolean> => {\n const { prompt_template, commit_message } = body;\n if (commit_message && commit_message.length > 72) {\n throw new Error(\"Commit message must be less than 72 characters.\");\n }\n if (!(prompt_template instanceof Object)) {\n throw new Error(\"Please provide a JSON prompt template.\");\n }\n return promptLayerPublishPrompt(body);\n};\n\nexport { getPrompt as get, publishPrompt as publish };\n","import { GetPromptTemplateParams, PublishPromptTemplate } from \"@/types\";\nimport { getPromptTemplate, publishPromptTemplate } from \"@/utils\";\n\nexport const get = (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => getPromptTemplate(promptName, params);\n\nexport const publish = (body: PublishPromptTemplate) =>\n publishPromptTemplate(body);\n","import { TrackGroup, TrackMetadata, TrackPrompt, TrackScore } from \"@/types\";\nimport {\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n} from \"@/utils\";\n\nconst metadata = (body: TrackMetadata): Promise<boolean> => {\n if (!(body.metadata instanceof Object)) {\n throw new Error(\"Please provide a dictionary of metadata.\");\n }\n for (const [key, value] of Object.entries(body.metadata)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Please provide a dictionary of metadata with key value pair of strings.\"\n );\n }\n }\n return promptLayerTrackMetadata(body);\n};\n\nconst score = (body: TrackScore): Promise<boolean> => {\n if (typeof body.score !== \"number\") {\n throw new Error(\"Score must be a number\");\n }\n if (body.score < 0 || body.score > 100) {\n throw new Error(\"Score must be a number between 0 and 100.\");\n }\n return promptLayerTrackScore(body);\n};\n\nconst prompt = (body: TrackPrompt): Promise<boolean> => {\n if (!(body.prompt_input_variables instanceof Object)) {\n throw new Error(\"Prompt template input variable dictionary not provided.\");\n }\n return promptLayerTrackPrompt(body);\n};\n\nconst group = (body: TrackGroup) => promptLayerTrackGroup(body);\n\nexport { group, metadata, prompt, score };\n","import * as groups from \"@/groups\";\nimport { promptLayerBase } from \"@/promptlayer\";\nimport * as prompts from \"@/prompts\";\nimport * as templates from \"@/templates\";\nimport * as track from \"@/track\";\nimport * as utils from \"@/utils\";\n\nexport const promptlayer = new Proxy<{\n OpenAI: any;\n Anthropic: any;\n api_key: string | undefined;\n utils: typeof utils;\n track: typeof track;\n groups: typeof groups;\n prompts: typeof prompts;\n templates: typeof templates;\n}>(\n {\n OpenAI: {},\n Anthropic: {},\n api_key: process.env.PROMPTLAYER_API_KEY,\n utils,\n track,\n groups,\n prompts,\n templates,\n },\n {\n get: (target, prop, receiver) => {\n if ([\"OpenAI\", \"Anthropic\"].includes(prop.toString())) {\n const moduleName = prop === \"OpenAI\" ? \"openai\" : \"@anthropic-ai/sdk\";\n const module = require(moduleName).default;\n return promptLayerBase(\n module,\n prop.toString().toLowerCase(),\n prop.toString().toLowerCase()\n );\n }\n return Reflect.get(target, prop, receiver);\n },\n }\n);\n"],"mappings":"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","names":["groups_exports","__export","create","utils_exports","__export","getApiKey","getPromptTemplate","promptLayerAllPromptTemplates","promptLayerApiRequest","promptLayerCreateGroup","promptLayerGetPrompt","promptLayerPublishPrompt","promptLayerTrackGroup","promptLayerTrackMetadata","promptLayerTrackPrompt","promptLayerTrackScore","promptlayerApiHandler","publishPromptTemplate","URL_API_PROMPTLAYER","getApiKey","promptlayer","promptlayerApiHandler","body","__async","proxyGenerator","promptLayerApiRequest","response","data","warnOnBadResponse","e","promptLayerAllPromptTemplates","params","url","key","value","promptLayerGetPrompt","_a","_b","_c","throwOnBadResponse","promptLayerPublishPrompt","__spreadProps","__spreadValues","promptLayerTrackMetadata","promptLayerTrackScore","promptLayerTrackPrompt","promptLayerTrackGroup","promptLayerCreateGroup","getPromptTemplate","promptName","publishPromptTemplate","cleaned_result","results","prev","current","result","final_result","has_function_call","has_tool_calls","function_name","function_arguments","delta","_function","generator","__asyncGenerator","iter","__forAwait","more","temp","error","__await","request_response","main_message","create","__async","promptLayerCreateGroup","promptLayerBase","llm","function_name","provider","handler","target","args","newTarget","prop","receiver","value","_a","_b","_c","_d","request_start_time","provider_type","return_pl_id","pl_tags","response","resolve","reject","request_response","__async","promptlayerApiHandler","getApiKey","error","prompts_exports","__export","all","getPrompt","publishPrompt","all","params","promptLayerAllPromptTemplates","getPrompt","__async","prompt","promptLayerGetPrompt","prompt_template","metadata","publishPrompt","body","commit_message","promptLayerPublishPrompt","templates_exports","__export","get","publish","get","promptName","params","getPromptTemplate","publish","body","publishPromptTemplate","track_exports","__export","group","metadata","prompt","score","metadata","body","key","value","promptLayerTrackMetadata","score","promptLayerTrackScore","prompt","promptLayerTrackPrompt","group","promptLayerTrackGroup","promptlayer","utils_exports","track_exports","groups_exports","prompts_exports","templates_exports","target","prop","receiver","module","__require","promptLayerBase"]}
package/dist/index.d.mts CHANGED
@@ -87,6 +87,10 @@ type Function_ = {
87
87
  description: string;
88
88
  parameters: Record<string, unknown>;
89
89
  };
90
+ type Tool = {
91
+ type: "function";
92
+ function: Function_;
93
+ };
90
94
  type FunctionCall = {
91
95
  name: string;
92
96
  arguments: string;
@@ -105,6 +109,11 @@ type UserMessage = {
105
109
  content: Content[];
106
110
  name?: string;
107
111
  };
112
+ type ToolCall = {
113
+ id: string;
114
+ type: "function";
115
+ function: FunctionCall;
116
+ };
108
117
  type AssistantMessage = {
109
118
  role: "assistant";
110
119
  input_variables?: string[];
@@ -112,6 +121,7 @@ type AssistantMessage = {
112
121
  content?: Content[];
113
122
  function_call?: FunctionCall;
114
123
  name?: string;
124
+ tool_calls?: ToolCall[];
115
125
  };
116
126
  type FunctionMessage = {
117
127
  role: "function";
@@ -120,7 +130,15 @@ type FunctionMessage = {
120
130
  content?: Content[];
121
131
  name: string;
122
132
  };
123
- type Message = SystemMessage | UserMessage | AssistantMessage | FunctionMessage;
133
+ type ToolMessage = {
134
+ role: "tool";
135
+ input_variables?: string[];
136
+ template_format?: TemplateFormat;
137
+ content: Content[];
138
+ tool_call_id: string;
139
+ name?: string;
140
+ };
141
+ type Message = SystemMessage | UserMessage | AssistantMessage | FunctionMessage | ToolMessage;
124
142
  type ChatFunctionCall = {
125
143
  name: string;
126
144
  };
@@ -130,12 +148,19 @@ type CompletionPromptTemplate = {
130
148
  content: Content[];
131
149
  input_variables?: string[];
132
150
  };
151
+ type ChatToolChoice = {
152
+ type: "function";
153
+ function: ChatFunctionCall;
154
+ };
155
+ type ToolChoice = string | ChatToolChoice;
133
156
  type ChatPromptTemplate = {
134
157
  type: "chat";
135
158
  messages: Message[];
136
159
  functions?: Function_[];
137
160
  function_call?: "auto" | "none" | ChatFunctionCall;
138
161
  input_variables?: string[];
162
+ tools?: Tool[];
163
+ tool_choice?: ToolChoice;
139
164
  };
140
165
  type PromptTemplate = CompletionPromptTemplate | ChatPromptTemplate;
141
166
  type Model = {
package/dist/index.d.ts CHANGED
@@ -87,6 +87,10 @@ type Function_ = {
87
87
  description: string;
88
88
  parameters: Record<string, unknown>;
89
89
  };
90
+ type Tool = {
91
+ type: "function";
92
+ function: Function_;
93
+ };
90
94
  type FunctionCall = {
91
95
  name: string;
92
96
  arguments: string;
@@ -105,6 +109,11 @@ type UserMessage = {
105
109
  content: Content[];
106
110
  name?: string;
107
111
  };
112
+ type ToolCall = {
113
+ id: string;
114
+ type: "function";
115
+ function: FunctionCall;
116
+ };
108
117
  type AssistantMessage = {
109
118
  role: "assistant";
110
119
  input_variables?: string[];
@@ -112,6 +121,7 @@ type AssistantMessage = {
112
121
  content?: Content[];
113
122
  function_call?: FunctionCall;
114
123
  name?: string;
124
+ tool_calls?: ToolCall[];
115
125
  };
116
126
  type FunctionMessage = {
117
127
  role: "function";
@@ -120,7 +130,15 @@ type FunctionMessage = {
120
130
  content?: Content[];
121
131
  name: string;
122
132
  };
123
- type Message = SystemMessage | UserMessage | AssistantMessage | FunctionMessage;
133
+ type ToolMessage = {
134
+ role: "tool";
135
+ input_variables?: string[];
136
+ template_format?: TemplateFormat;
137
+ content: Content[];
138
+ tool_call_id: string;
139
+ name?: string;
140
+ };
141
+ type Message = SystemMessage | UserMessage | AssistantMessage | FunctionMessage | ToolMessage;
124
142
  type ChatFunctionCall = {
125
143
  name: string;
126
144
  };
@@ -130,12 +148,19 @@ type CompletionPromptTemplate = {
130
148
  content: Content[];
131
149
  input_variables?: string[];
132
150
  };
151
+ type ChatToolChoice = {
152
+ type: "function";
153
+ function: ChatFunctionCall;
154
+ };
155
+ type ToolChoice = string | ChatToolChoice;
133
156
  type ChatPromptTemplate = {
134
157
  type: "chat";
135
158
  messages: Message[];
136
159
  functions?: Function_[];
137
160
  function_call?: "auto" | "none" | ChatFunctionCall;
138
161
  input_variables?: string[];
162
+ tools?: Tool[];
163
+ tool_choice?: ToolChoice;
139
164
  };
140
165
  type PromptTemplate = CompletionPromptTemplate | ChatPromptTemplate;
141
166
  type Model = {
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var b=Object.defineProperty,ae=Object.defineProperties,ne=Object.getOwnPropertyDescriptor,se=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertyNames,D=Object.getOwnPropertySymbols;var F=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var H=(t,e)=>{if(e=Symbol[t])return e;throw Error("Symbol."+t+" is not defined")};var z=(t,e,r)=>e in t?b(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,u=(t,e)=>{for(var r in e||(e={}))F.call(e,r)&&z(t,r,e[r]);if(D)for(var r of D(e))ie.call(e,r)&&z(t,r,e[r]);return t},f=(t,e)=>ae(t,se(e));var g=(t,e)=>{for(var r in e)b(t,r,{get:e[r],enumerable:!0})},ce=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of pe(e))!F.call(t,a)&&a!==r&&b(t,a,{get:()=>e[a],enumerable:!(o=ne(e,a))||o.enumerable});return t};var le=t=>ce(b({},"__esModule",{value:!0}),t);var c=(t,e,r)=>new Promise((o,a)=>{var i=s=>{try{n(r.next(s))}catch(p){a(p)}},l=s=>{try{n(r.throw(s))}catch(p){a(p)}},n=s=>s.done?o(s.value):Promise.resolve(s.value).then(i,l);n((r=r.apply(t,e)).next())}),d=function(t,e){this[0]=t,this[1]=e},Q=(t,e,r)=>{var o=(l,n,s,p)=>{try{var w=r[l](n),T=(n=w.value)instanceof d,L=w.done;Promise.resolve(T?n[0]:n).then(y=>T?o(l==="return"?l:"next",n[1]?{done:y.done,value:y.value}:y,s,p):s({value:y,done:L})).catch(y=>o("throw",y,s,p))}catch(y){p(y)}},a=l=>i[l]=n=>new Promise((s,p)=>o(l,n,s,p)),i={};return r=r.apply(t,e),i[Symbol.asyncIterator]=()=>i,a("next"),a("throw"),a("return"),i};var V=(t,e,r)=>(e=t[H("asyncIterator")])?e.call(t):(t=t[H("iterator")](),e={},r=(o,a)=>(a=t[o])&&(e[o]=i=>new Promise((l,n,s)=>(i=a.call(t,i),s=i.done,Promise.resolve(i.value).then(p=>l({value:p,done:s}),n)))),r("next"),r("return"),e);var Le={};g(Le,{promptlayer:()=>_});module.exports=le(Le);var C={};g(C,{create:()=>he});var v={};g(v,{getApiKey:()=>m,getPromptTemplate:()=>E,promptLayerAllPromptTemplates:()=>S,promptLayerApiRequest:()=>A,promptLayerCreateGroup:()=>x,promptLayerGetPrompt:()=>G,promptLayerPublishPrompt:()=>I,promptLayerTrackGroup:()=>j,promptLayerTrackMetadata:()=>$,promptLayerTrackPrompt:()=>W,promptLayerTrackScore:()=>O,promptlayerApiHandler:()=>R,publishPromptTemplate:()=>q});var h="https://api.promptlayer.com",m=()=>{if(_.api_key===void 0)throw new Error("Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' ");return _.api_key},R=t=>c(void 0,null,function*(){return t.request_response[Symbol.asyncIterator]!==void 0?ue(t.request_response,t):yield A(t)}),A=t=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/track-request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=yield e.json();if(e.status!==200&&P(r,"WARNING: While logging your request, PromptLayer experienced the following error:"),r&&t.return_pl_id)return[t.request_response,r.request_id]}catch(e){console.warn(`WARNING: While logging your request PromptLayer had the following error: ${e}`)}return t.request_response}),S=t=>c(void 0,null,function*(){let e=new URL(`${h}/rest/prompts`);Object.entries(t||{}).forEach(([r,o])=>e.searchParams.append(r,o));try{let r=yield fetch(e,{method:"GET",headers:{"Content-Type":"application/json","X-API-KEY":m()}}),o=yield r.json();return r.status!==200&&console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(o)}`),o}catch(r){console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${r}`)}}),G=t=>c(void 0,null,function*(){var i,l,n;let e={prompt_name:t.prompt_name,version:(l=(i=t.version)==null?void 0:i.toString())!=null?l:"",label:(n=t.label)!=null?n:""},r=new URL(`${h}/library-get-prompt-template`);r.search=new URLSearchParams(e).toString();let o;try{o=yield fetch(r.toString(),{method:"GET",headers:{"X-API-KEY":m()}})}catch(s){throw new Error(`PromptLayer had the following error while getting your prompt: ${s}`)}let a=yield o.json();return o.status!==200&&Z(a,"PromptLayer had the following error while retrieving your prompt template"),a}),I=t=>c(void 0,null,function*(){let e;try{e=yield fetch(`${h}/library-publish-prompt-template`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},t),{api_key:m()}))})}catch(o){throw new Error(`PromptLayer had the following error while publishing your prompt template: ${o}`)}let r=yield e.json();return e.status!==200&&Z(r,"PromptLayer had the following error while publishing your prompt"),!0}),$=t=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/library-track-metadata`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},t),{api_key:m()}))}),r=yield e.json();if(e.status!==200)return P(r,"WARNING: While logging metadata to your request, PromptLayer experienced the following error"),!1}catch(e){return console.warn(`WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`),!1}return!0}),O=t=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/library-track-score`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},t),{api_key:m()}))}),r=yield e.json();if(e.status!==200)return P(r,"WARNING: While scoring your request, PromptLayer experienced the following error"),!1}catch(e){return console.warn(`WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`),!1}return!0}),W=t=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/library-track-prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},t),{api_key:m()}))}),r=yield e.json();if(e.status!==200)return P(r,"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error"),!1}catch(e){return console.warn(`WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`),!1}return!0}),j=t=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/track-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},t),{api_key:m()}))}),r=yield e.json();if(e.status!==200)return P(r,"WARNING: While associating your request with a group, PromptLayer experienced the following error"),!1}catch(e){return console.warn(`WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`),!1}return!0}),x=()=>c(void 0,null,function*(){try{let t=yield fetch(`${h}/create-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:m()})}),e=yield t.json();return t.status!==200?(P(e,"WARNING: While creating a group PromptLayer had the following error"),!1):e.id}catch(t){return console.warn(`WARNING: While creating a group PromptLayer had the following error: ${t}`),!1}}),E=(t,e)=>c(void 0,null,function*(){try{let r=new URL(`${h}/prompt-templates/${t}`),o=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify(f(u({},e),{api_key:m()}))}),a=yield o.json();return o.status!==200?(P(a,"WARNING: While fetching a prompt template PromptLayer had the following error"),null):a}catch(r){return console.warn(`WARNING: While fetching a prompt template PromptLayer had the following error: ${r}`),null}}),q=t=>c(void 0,null,function*(){try{let e=yield fetch(`${h}/rest/prompt-templates`,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify({prompt_template:u({},t),prompt_version:u({},t)})}),r=yield e.json();return e.status===400&&P(r,"WARNING: While publishing a prompt template PromptLayer had the following error"),r}catch(e){console.warn(`WARNING: While publishing a prompt template PromptLayer had the following error: ${e}`)}}),me=t=>{if("completion"in t[0])return t.reduce((e,r)=>f(u({},r),{completion:`${e.completion}${r.completion}`}),{});if("text"in t[0].choices[0]){let e="";for(let o of t)e=`${e}${o.choices[0].text}`;let r=structuredClone(t.at(-1));return r.choices[0].text=e,r}else if("delta"in t[0].choices[0]){let e={role:"",content:""};for(let o of t)"role"in o.choices[0].delta&&(e.role=o.choices[0].delta.role),"content"in o.choices[0].delta&&(e.content=`${e.content}${o.choices[0].delta.content}`);let r=structuredClone(t.at(-1));return r.choices[0]=e,r}return""};function ue(t,e){return Q(this,null,function*(){let r=[];try{for(var i=V(t),l,n,s;l=!(n=yield new d(i.next())).done;l=!1){let p=n.value;yield p,r.push(p)}}catch(n){s=[n]}finally{try{l&&(n=i.return)&&(yield new d(n.call(i)))}finally{if(s)throw s[0]}}let o=me(r);yield yield new d(A(f(u({},e),{request_response:o,request_end_time:new Date().toISOString()})))})}var P=(t,e)=>{try{console.warn(`${e}: ${t.message}`)}catch(r){console.warn(`${e}: ${t}`)}},Z=(t,e)=>{throw"message"in t?new Error(`${e}: ${t.message}`):new Error(`${e}: ${t.message}`)};var he=()=>c(void 0,null,function*(){return yield x()});var ee=(t,e="",r="openai")=>{let o={construct:(a,i)=>{let l=Reflect.construct(a,i);return Object.defineProperties(l,{function_name:{value:e,writable:!0},provider:{value:r}}),new Proxy(l,o)},get:(a,i,l)=>{let n=a[i],s=`${Reflect.get(a,"function_name")}.${i.toString()}`;return typeof n=="object"?(Object.defineProperties(n,{function_name:{value:s,writable:!0},provider:{value:r}}),new Proxy(n,o)):typeof n=="function"?(...p)=>{var M,U,B,X;let w=new Date().toISOString(),T=Reflect.get(a,"provider"),L=(M=p[0])==null?void 0:M.return_pl_id,y=(U=p[0])==null?void 0:U.pl_tags;(B=p[0])==null||delete B.return_pl_id,(X=p[0])==null||delete X.pl_tags;let k=Reflect.apply(n,a,p);return k instanceof Promise?new Promise((te,re)=>{k.then(N=>c(void 0,null,function*(){let oe=yield R({api_key:m(),provider_type:T,function_name:s,request_start_time:w,request_end_time:new Date().toISOString(),request_response:N,kwargs:p[0],return_pl_id:L,tags:y});te(oe)})).catch(N=>{re(N)})}):k}:Reflect.get(a,i,l)}};return new Proxy(t,o)};var J={};g(J,{all:()=>ye,get:()=>fe,publish:()=>Pe});var ye=t=>S(t),fe=t=>c(void 0,null,function*(){let e=yield G(t),r=e.prompt_template,o=e.metadata;return{prompt_template:r,metadata:o}}),Pe=t=>{let{prompt_template:e,commit_message:r}=t;if(r&&r.length>72)throw new Error("Commit message must be less than 72 characters.");if(!(e instanceof Object))throw new Error("Please provide a JSON prompt template.");return I(t)};var Y={};g(Y,{get:()=>ge,publish:()=>de});var ge=(t,e)=>E(t,e),de=t=>q(t);var K={};g(K,{group:()=>_e,metadata:()=>we,prompt:()=>be,score:()=>Te});var we=t=>{if(!(t.metadata instanceof Object))throw new Error("Please provide a dictionary of metadata.");for(let[e,r]of Object.entries(t.metadata))if(typeof e!="string"||typeof r!="string")throw new Error("Please provide a dictionary of metadata with key value pair of strings.");return $(t)},Te=t=>{if(typeof t.score!="number")throw new Error("Score must be a number");if(t.score<0||t.score>100)throw new Error("Score must be a number between 0 and 100.");return O(t)},be=t=>{if(!(t.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return W(t)},_e=t=>j(t);var _=new Proxy({OpenAI:{},Anthropic:{},api_key:process.env.PROMPTLAYER_API_KEY,utils:v,track:K,groups:C,prompts:J,templates:Y},{get:(t,e,r)=>{if(["OpenAI","Anthropic"].includes(e.toString())){let o=e==="OpenAI"?"openai":"@anthropic-ai/sdk",a=require(o).default;return ee(a,e.toString().toLowerCase(),e.toString().toLowerCase())}return Reflect.get(t,e,r)}});0&&(module.exports={promptlayer});
1
+ "use strict";var _=Object.defineProperty,ae=Object.defineProperties,ne=Object.getOwnPropertyDescriptor,se=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertyNames,D=Object.getOwnPropertySymbols;var F=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var H=(e,t)=>{if(t=Symbol[e])return t;throw Error("Symbol."+e+" is not defined")};var z=(e,t,r)=>t in e?_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t)=>{for(var r in t||(t={}))F.call(t,r)&&z(e,r,t[r]);if(D)for(var r of D(t))ie.call(t,r)&&z(e,r,t[r]);return e},f=(e,t)=>ae(e,se(t));var g=(e,t)=>{for(var r in t)_(e,r,{get:t[r],enumerable:!0})},ce=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of pe(t))!F.call(e,a)&&a!==r&&_(e,a,{get:()=>t[a],enumerable:!(o=ne(t,a))||o.enumerable});return e};var le=e=>ce(_({},"__esModule",{value:!0}),e);var l=(e,t,r)=>new Promise((o,a)=>{var p=n=>{try{i(r.next(n))}catch(s){a(s)}},c=n=>{try{i(r.throw(n))}catch(s){a(s)}},i=n=>n.done?o(n.value):Promise.resolve(n.value).then(p,c);i((r=r.apply(e,t)).next())}),d=function(e,t){this[0]=e,this[1]=t},Q=(e,t,r)=>{var o=(c,i,n,s)=>{try{var w=r[c](i),T=(i=w.value)instanceof d,L=w.done;Promise.resolve(T?i[0]:i).then(y=>T?o(c==="return"?c:"next",i[1]?{done:y.done,value:y.value}:y,n,s):n({value:y,done:L})).catch(y=>o("throw",y,n,s))}catch(y){s(y)}},a=c=>p[c]=i=>new Promise((n,s)=>o(c,i,n,s)),p={};return r=r.apply(e,t),p[Symbol.asyncIterator]=()=>p,a("next"),a("throw"),a("return"),p};var V=(e,t,r)=>(t=e[H("asyncIterator")])?t.call(e):(e=e[H("iterator")](),t={},r=(o,a)=>(a=e[o])&&(t[o]=p=>new Promise((c,i,n)=>(p=a.call(e,p),n=p.done,Promise.resolve(p.value).then(s=>c({value:s,done:n}),i)))),r("next"),r("return"),t);var Le={};g(Le,{promptlayer:()=>b});module.exports=le(Le);var C={};g(C,{create:()=>he});var v={};g(v,{getApiKey:()=>m,getPromptTemplate:()=>E,promptLayerAllPromptTemplates:()=>$,promptLayerApiRequest:()=>A,promptLayerCreateGroup:()=>x,promptLayerGetPrompt:()=>S,promptLayerPublishPrompt:()=>G,promptLayerTrackGroup:()=>j,promptLayerTrackMetadata:()=>I,promptLayerTrackPrompt:()=>W,promptLayerTrackScore:()=>O,promptlayerApiHandler:()=>R,publishPromptTemplate:()=>q});var h="https://api.promptlayer.com",m=()=>{if(b.api_key===void 0)throw new Error("Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' ");return b.api_key},R=e=>l(void 0,null,function*(){return e.request_response[Symbol.asyncIterator]!==void 0?ue(e.request_response,e):yield A(e)}),A=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/track-request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=yield t.json();if(t.status!==200&&P(r,"WARNING: While logging your request, PromptLayer experienced the following error:"),r&&e.return_pl_id)return[e.request_response,r.request_id]}catch(t){console.warn(`WARNING: While logging your request PromptLayer had the following error: ${t}`)}return e.request_response}),$=e=>l(void 0,null,function*(){let t=new URL(`${h}/rest/prompts`);Object.entries(e||{}).forEach(([r,o])=>t.searchParams.append(r,o));try{let r=yield fetch(t,{method:"GET",headers:{"Content-Type":"application/json","X-API-KEY":m()}}),o=yield r.json();return r.status!==200&&console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(o)}`),o}catch(r){console.warn(`WARNING: While fetching all prompt templates, PromptLayer had the following error: ${r}`)}}),S=e=>l(void 0,null,function*(){var p,c,i;let t={prompt_name:e.prompt_name,version:(c=(p=e.version)==null?void 0:p.toString())!=null?c:"",label:(i=e.label)!=null?i:""},r=new URL(`${h}/library-get-prompt-template`);r.search=new URLSearchParams(t).toString();let o;try{o=yield fetch(r.toString(),{method:"GET",headers:{"X-API-KEY":m()}})}catch(n){throw new Error(`PromptLayer had the following error while getting your prompt: ${n}`)}let a=yield o.json();return o.status!==200&&Z(a,"PromptLayer had the following error while retrieving your prompt template"),a}),G=e=>l(void 0,null,function*(){let t;try{t=yield fetch(`${h}/library-publish-prompt-template`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))})}catch(o){throw new Error(`PromptLayer had the following error while publishing your prompt template: ${o}`)}let r=yield t.json();return t.status!==200&&Z(r,"PromptLayer had the following error while publishing your prompt"),!0}),I=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-metadata`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While logging metadata to your request, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${t}`),!1}return!0}),O=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-score`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While scoring your request, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While scoring your request, PromptLayer experienced the following error: ${t}`),!1}return!0}),W=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/library-track-prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${t}`),!1}return!0}),j=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/track-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f(u({},e),{api_key:m()}))}),r=yield t.json();if(t.status!==200)return P(r,"WARNING: While associating your request with a group, PromptLayer experienced the following error"),!1}catch(t){return console.warn(`WARNING: While associating your request with a group, PromptLayer experienced the following error: ${t}`),!1}return!0}),x=()=>l(void 0,null,function*(){try{let e=yield fetch(`${h}/create-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:m()})}),t=yield e.json();return e.status!==200?(P(t,"WARNING: While creating a group PromptLayer had the following error"),!1):t.id}catch(e){return console.warn(`WARNING: While creating a group PromptLayer had the following error: ${e}`),!1}}),E=(e,t)=>l(void 0,null,function*(){try{let r=new URL(`${h}/prompt-templates/${e}`),o=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify(f(u({},t),{api_key:m()}))}),a=yield o.json();return o.status!==200?(P(a,"WARNING: While fetching a prompt template PromptLayer had the following error"),null):a}catch(r){return console.warn(`WARNING: While fetching a prompt template PromptLayer had the following error: ${r}`),null}}),q=e=>l(void 0,null,function*(){try{let t=yield fetch(`${h}/rest/prompt-templates`,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":m()},body:JSON.stringify({prompt_template:u({},e),prompt_version:u({},e)})}),r=yield t.json();return t.status===400&&P(r,"WARNING: While publishing a prompt template PromptLayer had the following error"),r}catch(t){console.warn(`WARNING: While publishing a prompt template PromptLayer had the following error: ${t}`)}}),me=e=>{if("completion"in e[0])return e.reduce((t,r)=>f(u({},r),{completion:`${t.completion}${r.completion}`}),{});if("text"in e[0].choices[0]){let t="";for(let o of e)t=`${t}${o.choices[0].text}`;let r=structuredClone(e.at(-1));return r.choices[0].text=t,r}if("delta"in e[0].choices[0]){let t=!1,r=!1,o="",a="",p={role:"",content:""};for(let i of e){let n=i.choices[0].delta;if(Object.keys(n).length!==0){if("function_call"in n){t=!0;let s=n.function_call;s.name&&(o=s.name),a=`${a}${s.arguments}`}if("tool_calls"in n){r=!0;let s=n.tool_calls[0].function;s.name&&(o=s.name),a=`${a}${s.arguments}`}}"role"in n&&(p.role=n.role),"content"in n&&(p.content=`${p.content}${n.content}`)}t&&(p.function_call={name:o,arguments:a}),r&&(p.tool_calls=[{type:"function",function:{name:o,arguments:a}}]);let c=structuredClone(e.at(-1));return c.choices[0]=p,c}return""};function ue(e,t){return Q(this,null,function*(){let r=[];try{for(var p=V(e),c,i,n;c=!(i=yield new d(p.next())).done;c=!1){let s=i.value;yield s,r.push(s)}}catch(i){n=[i]}finally{try{c&&(i=p.return)&&(yield new d(i.call(p)))}finally{if(n)throw n[0]}}let o=me(r);yield yield new d(A(f(u({},t),{request_response:o,request_end_time:new Date().toISOString()})))})}var P=(e,t)=>{try{console.warn(`${t}: ${e.message}`)}catch(r){console.warn(`${t}: ${e}`)}},Z=(e,t)=>{throw"message"in e?new Error(`${t}: ${e.message}`):new Error(`${t}: ${e.message}`)};var he=()=>l(void 0,null,function*(){return yield x()});var ee=(e,t="",r="openai")=>{let o={construct:(a,p)=>{let c=Reflect.construct(a,p);return Object.defineProperties(c,{function_name:{value:t,writable:!0},provider:{value:r}}),new Proxy(c,o)},get:(a,p,c)=>{let i=a[p],n=`${Reflect.get(a,"function_name")}.${p.toString()}`;return typeof i=="object"?(Object.defineProperties(i,{function_name:{value:n,writable:!0},provider:{value:r}}),new Proxy(i,o)):typeof i=="function"?(...s)=>{var M,U,B,X;let w=new Date().toISOString(),T=Reflect.get(a,"provider"),L=(M=s[0])==null?void 0:M.return_pl_id,y=(U=s[0])==null?void 0:U.pl_tags;(B=s[0])==null||delete B.return_pl_id,(X=s[0])==null||delete X.pl_tags;let k=Reflect.apply(i,a,s);return k instanceof Promise?new Promise((te,re)=>{k.then(N=>l(void 0,null,function*(){let oe=yield R({api_key:m(),provider_type:T,function_name:n,request_start_time:w,request_end_time:new Date().toISOString(),request_response:N,kwargs:s[0],return_pl_id:L,tags:y});te(oe)})).catch(N=>{re(N)})}):k}:Reflect.get(a,p,c)}};return new Proxy(e,o)};var J={};g(J,{all:()=>ye,get:()=>fe,publish:()=>Pe});var ye=e=>$(e),fe=e=>l(void 0,null,function*(){let t=yield S(e),r=t.prompt_template,o=t.metadata;return{prompt_template:r,metadata:o}}),Pe=e=>{let{prompt_template:t,commit_message:r}=e;if(r&&r.length>72)throw new Error("Commit message must be less than 72 characters.");if(!(t instanceof Object))throw new Error("Please provide a JSON prompt template.");return G(e)};var Y={};g(Y,{get:()=>ge,publish:()=>de});var ge=(e,t)=>E(e,t),de=e=>q(e);var K={};g(K,{group:()=>be,metadata:()=>we,prompt:()=>_e,score:()=>Te});var we=e=>{if(!(e.metadata instanceof Object))throw new Error("Please provide a dictionary of metadata.");for(let[t,r]of Object.entries(e.metadata))if(typeof t!="string"||typeof r!="string")throw new Error("Please provide a dictionary of metadata with key value pair of strings.");return I(e)},Te=e=>{if(typeof e.score!="number")throw new Error("Score must be a number");if(e.score<0||e.score>100)throw new Error("Score must be a number between 0 and 100.");return O(e)},_e=e=>{if(!(e.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return W(e)},be=e=>j(e);var b=new Proxy({OpenAI:{},Anthropic:{},api_key:process.env.PROMPTLAYER_API_KEY,utils:v,track:K,groups:C,prompts:J,templates:Y},{get:(e,t,r)=>{if(["OpenAI","Anthropic"].includes(t.toString())){let o=t==="OpenAI"?"openai":"@anthropic-ai/sdk",a=require(o).default;return ee(a,t.toString().toLowerCase(),t.toString().toLowerCase())}return Reflect.get(e,t,r)}});0&&(module.exports={promptlayer});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/groups.ts","../src/utils.ts","../src/promptlayer.ts","../src/prompts.ts","../src/templates.ts","../src/track.ts"],"sourcesContent":["import * as groups from \"@/groups\";\nimport { promptLayerBase } from \"@/promptlayer\";\nimport * as prompts from \"@/prompts\";\nimport * as templates from \"@/templates\";\nimport * as track from \"@/track\";\nimport * as utils from \"@/utils\";\n\nexport const promptlayer = new Proxy<{\n OpenAI: any;\n Anthropic: any;\n api_key: string | undefined;\n utils: typeof utils;\n track: typeof track;\n groups: typeof groups;\n prompts: typeof prompts;\n templates: typeof templates;\n}>(\n {\n OpenAI: {},\n Anthropic: {},\n api_key: process.env.PROMPTLAYER_API_KEY,\n utils,\n track,\n groups,\n prompts,\n templates,\n },\n {\n get: (target, prop, receiver) => {\n if ([\"OpenAI\", \"Anthropic\"].includes(prop.toString())) {\n const moduleName = prop === \"OpenAI\" ? \"openai\" : \"@anthropic-ai/sdk\";\n const module = require(moduleName).default;\n return promptLayerBase(\n module,\n prop.toString().toLowerCase(),\n prop.toString().toLowerCase()\n );\n }\n return Reflect.get(target, prop, receiver);\n },\n }\n);\n","import { promptLayerCreateGroup } from \"@/utils\";\n\nconst create = async (): Promise<number | boolean> =>\n await promptLayerCreateGroup();\n\nexport { create };\n","import { promptlayer } from \"@/index\";\nimport {\n GetPromptTemplate,\n GetPromptTemplateParams,\n LegacyPublishPromptTemplate,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n} from \"@/types\";\n\nconst URL_API_PROMPTLAYER = \"https://api.promptlayer.com\";\n\nconst getApiKey = () => {\n if (promptlayer.api_key === undefined) {\n throw new Error(\n \"Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' \"\n );\n } else {\n return promptlayer.api_key;\n }\n};\n\nconst promptlayerApiHandler = async <Item>(\n body: TrackRequest & {\n request_response: AsyncIterable<Item> | any;\n }\n) => {\n const isGenerator = body.request_response[Symbol.asyncIterator] !== undefined;\n if (isGenerator) {\n return proxyGenerator(body.request_response, body);\n }\n return await promptLayerApiRequest(body);\n};\n\nconst promptLayerApiRequest = async (body: TrackRequest) => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-request`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n if (data && body.return_pl_id) {\n return [body.request_response, data.request_id];\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return body.request_response;\n};\n\nconst promptLayerAllPromptTemplates = async (params?: Pagination) => {\n const url = new URL(`${URL_API_PROMPTLAYER}/rest/prompts`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value)\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n });\n const data = await response.json();\n if (response.status !== 200) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(\n data\n )}`\n );\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${e}`\n );\n }\n};\n\n/**\n * Get a prompt from the PromptLayer library\n * @param prompt_name name of the prompt to get\n * @param api_key your api key\n * @param version version of the prompt to get, None for latest\n * @param label The release label of a prompt you want to get. Setting this will supercede version\n */\nconst promptLayerGetPrompt = async (body: GetPromptTemplate) => {\n const params: Record<string, string> = {\n prompt_name: body.prompt_name,\n version: body.version?.toString() ?? \"\",\n label: body.label ?? \"\",\n };\n const url = new URL(`${URL_API_PROMPTLAYER}/library-get-prompt-template`);\n url.search = new URLSearchParams(params).toString();\n let response: Response;\n try {\n response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"X-API-KEY\": getApiKey(),\n },\n });\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while getting your prompt: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while retrieving your prompt template`\n );\n }\n return data;\n};\n\nconst promptLayerPublishPrompt = async (\n body: LegacyPublishPromptTemplate\n): Promise<boolean> => {\n let response: Response;\n try {\n response = await fetch(\n `${URL_API_PROMPTLAYER}/library-publish-prompt-template`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while publishing your prompt template: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while publishing your prompt`\n );\n }\n return true;\n};\n\nconst promptLayerTrackMetadata = async (\n body: TrackMetadata\n): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-metadata`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging metadata to your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackScore = async (body: TrackScore): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/library-track-score`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While scoring your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackPrompt = async (body: TrackPrompt): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-prompt`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackGroup = async (body: TrackGroup): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a group, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerCreateGroup = async (): Promise<number | boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/create-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While creating a group PromptLayer had the following error\"\n );\n return false;\n }\n return data.id;\n } catch (e) {\n console.warn(\n `WARNING: While creating a group PromptLayer had the following error: ${e}`\n );\n return false;\n }\n};\n\nconst getPromptTemplate = async (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => {\n try {\n const url = new URL(\n `${URL_API_PROMPTLAYER}/prompt-templates/${promptName}`\n );\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({ ...params, api_key: getApiKey() }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While fetching a prompt template PromptLayer had the following error\"\n );\n return null;\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst publishPromptTemplate = async (body: PublishPromptTemplate) => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/rest/prompt-templates`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({\n prompt_template: { ...body },\n prompt_version: { ...body },\n }),\n }\n );\n const data = await response.json();\n if (response.status === 400) {\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a prompt template PromptLayer had the following error\"\n );\n }\n return data as Promise<PublishPromptTemplateResponse>;\n } catch (e) {\n console.warn(\n `WARNING: While publishing a prompt template PromptLayer had the following error: ${e}`\n );\n }\n};\n\nconst cleaned_result = (results: any[]) => {\n if (\"completion\" in results[0])\n return results.reduce(\n (prev, current) => ({\n ...current,\n completion: `${prev.completion}${current.completion}`,\n }),\n {}\n );\n if (\"text\" in results[0].choices[0]) {\n let response = \"\";\n for (const result of results) {\n response = `${response}${result.choices[0].text}`;\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0].text = response;\n return final_result;\n } else if (\"delta\" in results[0].choices[0]) {\n let response = { role: \"\", content: \"\" };\n for (const result of results) {\n if (\"role\" in result.choices[0].delta) {\n response.role = result.choices[0].delta.role;\n }\n if (\"content\" in result.choices[0].delta) {\n response.content = `${response[\"content\"]}${result.choices[0].delta.content}`;\n }\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0] = response;\n return final_result;\n }\n return \"\";\n};\n\nasync function* proxyGenerator<Item>(\n generator: AsyncIterable<Item>,\n body: TrackRequest\n) {\n const results = [];\n for await (const value of generator) {\n yield value;\n results.push(value);\n }\n const request_response = cleaned_result(results);\n const response = await promptLayerApiRequest({\n ...body,\n request_response,\n request_end_time: new Date().toISOString(),\n });\n yield response;\n}\n\nconst warnOnBadResponse = (request_response: any, main_message: string) => {\n try {\n console.warn(`${main_message}: ${request_response.message}`);\n } catch (e) {\n console.warn(`${main_message}: ${request_response}`);\n }\n};\n\nconst throwOnBadResponse = (request_response: any, main_message: string) => {\n if (\"message\" in request_response) {\n throw new Error(`${main_message}: ${request_response.message}`);\n }\n throw new Error(`${main_message}: ${request_response.message}`);\n};\n\nexport {\n getApiKey,\n getPromptTemplate,\n promptLayerAllPromptTemplates,\n promptLayerApiRequest,\n promptLayerCreateGroup,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n promptlayerApiHandler,\n publishPromptTemplate,\n};\n","import { getApiKey, promptlayerApiHandler } from \"@/utils\";\n\nexport const promptLayerBase = (\n llm: object,\n function_name = \"\",\n provider = \"openai\"\n) => {\n const handler: ProxyHandler<any> = {\n construct: (target, args) => {\n const newTarget = Reflect.construct(target, args);\n Object.defineProperties(newTarget, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(newTarget, handler);\n },\n get: (target, prop, receiver) => {\n const value = target[prop];\n const function_name = `${Reflect.get(\n target,\n \"function_name\"\n )}.${prop.toString()}`;\n if (typeof value === \"object\") {\n Object.defineProperties(value, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(value, handler);\n }\n if (typeof value === \"function\") {\n return (...args: any[]) => {\n const request_start_time = new Date().toISOString();\n const provider_type = Reflect.get(target, \"provider\");\n const return_pl_id = args[0]?.return_pl_id;\n const pl_tags = args[0]?.pl_tags;\n delete args[0]?.return_pl_id;\n delete args[0]?.pl_tags;\n const response = Reflect.apply(value, target, args);\n if (response instanceof Promise) {\n return new Promise((resolve, reject) => {\n response\n .then(async (request_response) => {\n const response = await promptlayerApiHandler({\n api_key: getApiKey(),\n provider_type,\n function_name,\n request_start_time,\n request_end_time: new Date().toISOString(),\n request_response,\n kwargs: args[0],\n return_pl_id,\n tags: pl_tags,\n });\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n return response;\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n };\n return new Proxy(llm, handler);\n};\n","import {\n GetPromptTemplate,\n LegacyPromptTemplate,\n LegacyPublishPromptTemplate,\n Pagination,\n} from \"@/types\";\nimport {\n promptLayerAllPromptTemplates,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n} from \"@/utils\";\n\n/**\n * @description List all prompts on PromptLayer.\n * @param params\n */\nexport const all = (params?: Pagination) =>\n promptLayerAllPromptTemplates(params);\n/**\n * Get a prompt template from PromptLayer.\n */\nconst getPrompt = async (\n params: GetPromptTemplate\n): Promise<LegacyPromptTemplate> => {\n const prompt = await promptLayerGetPrompt(params);\n const prompt_template = prompt[\"prompt_template\"];\n const metadata = prompt[\"metadata\"];\n return {\n prompt_template,\n metadata,\n };\n};\n\nconst publishPrompt = (body: LegacyPublishPromptTemplate): Promise<boolean> => {\n const { prompt_template, commit_message } = body;\n if (commit_message && commit_message.length > 72) {\n throw new Error(\"Commit message must be less than 72 characters.\");\n }\n if (!(prompt_template instanceof Object)) {\n throw new Error(\"Please provide a JSON prompt template.\");\n }\n return promptLayerPublishPrompt(body);\n};\n\nexport { getPrompt as get, publishPrompt as publish };\n","import { GetPromptTemplateParams, PublishPromptTemplate } from \"@/types\";\nimport { getPromptTemplate, publishPromptTemplate } from \"@/utils\";\n\nexport const get = (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => getPromptTemplate(promptName, params);\n\nexport const publish = (body: PublishPromptTemplate) =>\n publishPromptTemplate(body);\n","import { TrackGroup, TrackMetadata, TrackPrompt, TrackScore } from \"@/types\";\nimport {\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n} from \"@/utils\";\n\nconst metadata = (body: TrackMetadata): Promise<boolean> => {\n if (!(body.metadata instanceof Object)) {\n throw new Error(\"Please provide a dictionary of metadata.\");\n }\n for (const [key, value] of Object.entries(body.metadata)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Please provide a dictionary of metadata with key value pair of strings.\"\n );\n }\n }\n return promptLayerTrackMetadata(body);\n};\n\nconst score = (body: TrackScore): Promise<boolean> => {\n if (typeof body.score !== \"number\") {\n throw new Error(\"Score must be a number\");\n }\n if (body.score < 0 || body.score > 100) {\n throw new Error(\"Score must be a number between 0 and 100.\");\n }\n return promptLayerTrackScore(body);\n};\n\nconst prompt = (body: TrackPrompt): Promise<boolean> => {\n if (!(body.prompt_input_variables instanceof Object)) {\n throw new Error(\"Prompt template input variable dictionary not provided.\");\n }\n return promptLayerTrackPrompt(body);\n};\n\nconst group = (body: TrackGroup) => promptLayerTrackGroup(body);\n\nexport { group, metadata, prompt, score };\n"],"mappings":"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","names":["src_exports","__export","promptlayer","__toCommonJS","groups_exports","__export","create","utils_exports","__export","getApiKey","getPromptTemplate","promptLayerAllPromptTemplates","promptLayerApiRequest","promptLayerCreateGroup","promptLayerGetPrompt","promptLayerPublishPrompt","promptLayerTrackGroup","promptLayerTrackMetadata","promptLayerTrackPrompt","promptLayerTrackScore","promptlayerApiHandler","publishPromptTemplate","URL_API_PROMPTLAYER","getApiKey","promptlayer","promptlayerApiHandler","body","__async","proxyGenerator","promptLayerApiRequest","response","data","warnOnBadResponse","promptLayerAllPromptTemplates","params","url","key","value","e","promptLayerGetPrompt","_a","_b","_c","throwOnBadResponse","promptLayerPublishPrompt","__spreadProps","__spreadValues","promptLayerTrackMetadata","promptLayerTrackScore","promptLayerTrackPrompt","promptLayerTrackGroup","promptLayerCreateGroup","getPromptTemplate","promptName","publishPromptTemplate","cleaned_result","results","prev","current","result","final_result","generator","__asyncGenerator","iter","__forAwait","more","temp","error","__await","request_response","main_message","create","__async","promptLayerCreateGroup","promptLayerBase","llm","function_name","provider","handler","target","args","newTarget","prop","receiver","value","_a","_b","_c","_d","request_start_time","provider_type","return_pl_id","pl_tags","response","resolve","reject","request_response","__async","promptlayerApiHandler","getApiKey","error","prompts_exports","__export","all","getPrompt","publishPrompt","all","params","promptLayerAllPromptTemplates","getPrompt","__async","prompt","promptLayerGetPrompt","prompt_template","metadata","publishPrompt","body","commit_message","promptLayerPublishPrompt","templates_exports","__export","get","publish","get","promptName","params","getPromptTemplate","publish","body","publishPromptTemplate","track_exports","__export","group","metadata","prompt","score","metadata","body","key","value","promptLayerTrackMetadata","score","promptLayerTrackScore","prompt","promptLayerTrackPrompt","group","promptLayerTrackGroup","promptlayer","utils_exports","track_exports","groups_exports","prompts_exports","templates_exports","target","prop","receiver","moduleName","module","promptLayerBase"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/groups.ts","../src/utils.ts","../src/promptlayer.ts","../src/prompts.ts","../src/templates.ts","../src/track.ts"],"sourcesContent":["import * as groups from \"@/groups\";\nimport { promptLayerBase } from \"@/promptlayer\";\nimport * as prompts from \"@/prompts\";\nimport * as templates from \"@/templates\";\nimport * as track from \"@/track\";\nimport * as utils from \"@/utils\";\n\nexport const promptlayer = new Proxy<{\n OpenAI: any;\n Anthropic: any;\n api_key: string | undefined;\n utils: typeof utils;\n track: typeof track;\n groups: typeof groups;\n prompts: typeof prompts;\n templates: typeof templates;\n}>(\n {\n OpenAI: {},\n Anthropic: {},\n api_key: process.env.PROMPTLAYER_API_KEY,\n utils,\n track,\n groups,\n prompts,\n templates,\n },\n {\n get: (target, prop, receiver) => {\n if ([\"OpenAI\", \"Anthropic\"].includes(prop.toString())) {\n const moduleName = prop === \"OpenAI\" ? \"openai\" : \"@anthropic-ai/sdk\";\n const module = require(moduleName).default;\n return promptLayerBase(\n module,\n prop.toString().toLowerCase(),\n prop.toString().toLowerCase()\n );\n }\n return Reflect.get(target, prop, receiver);\n },\n }\n);\n","import { promptLayerCreateGroup } from \"@/utils\";\n\nconst create = async (): Promise<number | boolean> =>\n await promptLayerCreateGroup();\n\nexport { create };\n","import { promptlayer } from \"@/index\";\nimport {\n GetPromptTemplate,\n GetPromptTemplateParams,\n LegacyPublishPromptTemplate,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n} from \"@/types\";\n\nconst URL_API_PROMPTLAYER = \"https://api.promptlayer.com\";\n\nconst getApiKey = () => {\n if (promptlayer.api_key === undefined) {\n throw new Error(\n \"Please set your PROMPTLAYER_API_KEY environment variable or set API KEY in code using 'promptlayer.api_key = <your_api_key>' \"\n );\n } else {\n return promptlayer.api_key;\n }\n};\n\nconst promptlayerApiHandler = async <Item>(\n body: TrackRequest & {\n request_response: AsyncIterable<Item> | any;\n }\n) => {\n const isGenerator = body.request_response[Symbol.asyncIterator] !== undefined;\n if (isGenerator) {\n return proxyGenerator(body.request_response, body);\n }\n return await promptLayerApiRequest(body);\n};\n\nconst promptLayerApiRequest = async (body: TrackRequest) => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-request`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n if (data && body.return_pl_id) {\n return [body.request_response, data.request_id];\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return body.request_response;\n};\n\nconst promptLayerAllPromptTemplates = async (params?: Pagination) => {\n const url = new URL(`${URL_API_PROMPTLAYER}/rest/prompts`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value)\n );\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n });\n const data = await response.json();\n if (response.status !== 200) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${JSON.stringify(\n data\n )}`\n );\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching all prompt templates, PromptLayer had the following error: ${e}`\n );\n }\n};\n\n/**\n * Get a prompt from the PromptLayer library\n * @param prompt_name name of the prompt to get\n * @param api_key your api key\n * @param version version of the prompt to get, None for latest\n * @param label The release label of a prompt you want to get. Setting this will supercede version\n */\nconst promptLayerGetPrompt = async (body: GetPromptTemplate) => {\n const params: Record<string, string> = {\n prompt_name: body.prompt_name,\n version: body.version?.toString() ?? \"\",\n label: body.label ?? \"\",\n };\n const url = new URL(`${URL_API_PROMPTLAYER}/library-get-prompt-template`);\n url.search = new URLSearchParams(params).toString();\n let response: Response;\n try {\n response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"X-API-KEY\": getApiKey(),\n },\n });\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while getting your prompt: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while retrieving your prompt template`\n );\n }\n return data;\n};\n\nconst promptLayerPublishPrompt = async (\n body: LegacyPublishPromptTemplate\n): Promise<boolean> => {\n let response: Response;\n try {\n response = await fetch(\n `${URL_API_PROMPTLAYER}/library-publish-prompt-template`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n } catch (e) {\n throw new Error(\n `PromptLayer had the following error while publishing your prompt template: ${e}`\n );\n }\n const data = await response.json();\n if (response.status !== 200) {\n throwOnBadResponse(\n data,\n `PromptLayer had the following error while publishing your prompt`\n );\n }\n return true;\n};\n\nconst promptLayerTrackMetadata = async (\n body: TrackMetadata\n): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-metadata`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While logging metadata to your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackScore = async (body: TrackScore): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/library-track-score`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While scoring your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackPrompt = async (body: TrackPrompt): Promise<boolean> => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/library-track-prompt`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n }\n );\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackGroup = async (body: TrackGroup): Promise<boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/track-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n ...body,\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a group, PromptLayer experienced the following error\"\n );\n return false;\n }\n } catch (e) {\n console.warn(\n `WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerCreateGroup = async (): Promise<number | boolean> => {\n try {\n const response = await fetch(`${URL_API_PROMPTLAYER}/create-group`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n api_key: getApiKey(),\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While creating a group PromptLayer had the following error\"\n );\n return false;\n }\n return data.id;\n } catch (e) {\n console.warn(\n `WARNING: While creating a group PromptLayer had the following error: ${e}`\n );\n return false;\n }\n};\n\nconst getPromptTemplate = async (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => {\n try {\n const url = new URL(\n `${URL_API_PROMPTLAYER}/prompt-templates/${promptName}`\n );\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({ ...params, api_key: getApiKey() }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n warnOnBadResponse(\n data,\n \"WARNING: While fetching a prompt template PromptLayer had the following error\"\n );\n return null;\n }\n return data;\n } catch (e) {\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst publishPromptTemplate = async (body: PublishPromptTemplate) => {\n try {\n const response = await fetch(\n `${URL_API_PROMPTLAYER}/rest/prompt-templates`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": getApiKey(),\n },\n body: JSON.stringify({\n prompt_template: { ...body },\n prompt_version: { ...body },\n }),\n }\n );\n const data = await response.json();\n if (response.status === 400) {\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a prompt template PromptLayer had the following error\"\n );\n }\n return data as Promise<PublishPromptTemplateResponse>;\n } catch (e) {\n console.warn(\n `WARNING: While publishing a prompt template PromptLayer had the following error: ${e}`\n );\n }\n};\n\nconst cleaned_result = (results: any[]) => {\n if (\"completion\" in results[0]) {\n return results.reduce(\n (prev, current) => ({\n ...current,\n completion: `${prev.completion}${current.completion}`,\n }),\n {}\n );\n }\n\n if (\"text\" in results[0].choices[0]) {\n let response = \"\";\n for (const result of results) {\n response = `${response}${result.choices[0].text}`;\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0].text = response;\n return final_result;\n }\n\n // Response was streamed\n if (\"delta\" in results[0].choices[0]) {\n let has_function_call = false;\n let has_tool_calls = false;\n let function_name = '';\n let function_arguments = '';\n let response: any = {role: \"\", content: \"\"};\n\n for (const result of results) {\n const delta = result.choices[0].delta\n\n if (Object.keys(delta).length !== 0) {\n\n // Function call (deprecated)\n if (\"function_call\" in delta) {\n has_function_call = true;\n const _function = delta[\"function_call\"]\n if (_function.name) function_name = _function.name\n function_arguments = `${function_arguments}${_function.arguments}`;\n }\n\n // Tool call\n if (\"tool_calls\" in delta) {\n has_tool_calls = true;\n const _function = delta.tool_calls[0].function\n if (_function.name) function_name = _function.name\n function_arguments = `${function_arguments}${_function.arguments}`;\n }\n\n }\n\n if (\"role\" in delta) {\n response.role = delta.role;\n }\n\n if (\"content\" in delta) {\n response.content = `${response[\"content\"]}${delta.content}`;\n }\n }\n\n if (has_function_call) {\n response['function_call'] = {\n 'name': function_name,\n 'arguments': function_arguments,\n }\n }\n\n if (has_tool_calls) {\n response['tool_calls'] = [\n {\n type: \"function\",\n function: {\n name: function_name,\n arguments: function_arguments,\n },\n }\n ]\n }\n\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0] = response;\n\n return final_result;\n }\n\n return \"\";\n};\n\nasync function* proxyGenerator<Item>(\n generator: AsyncIterable<Item>,\n body: TrackRequest\n) {\n const results = [];\n for await (const value of generator) {\n yield value;\n results.push(value);\n }\n const request_response = cleaned_result(results);\n const response = await promptLayerApiRequest({\n ...body,\n request_response,\n request_end_time: new Date().toISOString(),\n });\n yield response;\n}\n\nconst warnOnBadResponse = (request_response: any, main_message: string) => {\n try {\n console.warn(`${main_message}: ${request_response.message}`);\n } catch (e) {\n console.warn(`${main_message}: ${request_response}`);\n }\n};\n\nconst throwOnBadResponse = (request_response: any, main_message: string) => {\n if (\"message\" in request_response) {\n throw new Error(`${main_message}: ${request_response.message}`);\n }\n throw new Error(`${main_message}: ${request_response.message}`);\n};\n\nexport {\n getApiKey,\n getPromptTemplate,\n promptLayerAllPromptTemplates,\n promptLayerApiRequest,\n promptLayerCreateGroup,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n promptlayerApiHandler,\n publishPromptTemplate,\n};\n","import { getApiKey, promptlayerApiHandler } from \"@/utils\";\n\nexport const promptLayerBase = (\n llm: object,\n function_name = \"\",\n provider = \"openai\"\n) => {\n const handler: ProxyHandler<any> = {\n construct: (target, args) => {\n const newTarget = Reflect.construct(target, args);\n Object.defineProperties(newTarget, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(newTarget, handler);\n },\n get: (target, prop, receiver) => {\n const value = target[prop];\n const function_name = `${Reflect.get(\n target,\n \"function_name\"\n )}.${prop.toString()}`;\n if (typeof value === \"object\") {\n Object.defineProperties(value, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(value, handler);\n }\n if (typeof value === \"function\") {\n return (...args: any[]) => {\n const request_start_time = new Date().toISOString();\n const provider_type = Reflect.get(target, \"provider\");\n const return_pl_id = args[0]?.return_pl_id;\n const pl_tags = args[0]?.pl_tags;\n delete args[0]?.return_pl_id;\n delete args[0]?.pl_tags;\n const response = Reflect.apply(value, target, args);\n if (response instanceof Promise) {\n return new Promise((resolve, reject) => {\n response\n .then(async (request_response) => {\n const response = await promptlayerApiHandler({\n api_key: getApiKey(),\n provider_type,\n function_name,\n request_start_time,\n request_end_time: new Date().toISOString(),\n request_response,\n kwargs: args[0],\n return_pl_id,\n tags: pl_tags,\n });\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n return response;\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n };\n return new Proxy(llm, handler);\n};\n","import {\n GetPromptTemplate,\n LegacyPromptTemplate,\n LegacyPublishPromptTemplate,\n Pagination,\n} from \"@/types\";\nimport {\n promptLayerAllPromptTemplates,\n promptLayerGetPrompt,\n promptLayerPublishPrompt,\n} from \"@/utils\";\n\n/**\n * @description List all prompts on PromptLayer.\n * @param params\n */\nexport const all = (params?: Pagination) =>\n promptLayerAllPromptTemplates(params);\n/**\n * Get a prompt template from PromptLayer.\n */\nconst getPrompt = async (\n params: GetPromptTemplate\n): Promise<LegacyPromptTemplate> => {\n const prompt = await promptLayerGetPrompt(params);\n const prompt_template = prompt[\"prompt_template\"];\n const metadata = prompt[\"metadata\"];\n return {\n prompt_template,\n metadata,\n };\n};\n\nconst publishPrompt = (body: LegacyPublishPromptTemplate): Promise<boolean> => {\n const { prompt_template, commit_message } = body;\n if (commit_message && commit_message.length > 72) {\n throw new Error(\"Commit message must be less than 72 characters.\");\n }\n if (!(prompt_template instanceof Object)) {\n throw new Error(\"Please provide a JSON prompt template.\");\n }\n return promptLayerPublishPrompt(body);\n};\n\nexport { getPrompt as get, publishPrompt as publish };\n","import { GetPromptTemplateParams, PublishPromptTemplate } from \"@/types\";\nimport { getPromptTemplate, publishPromptTemplate } from \"@/utils\";\n\nexport const get = (\n promptName: string,\n params?: Partial<GetPromptTemplateParams>\n) => getPromptTemplate(promptName, params);\n\nexport const publish = (body: PublishPromptTemplate) =>\n publishPromptTemplate(body);\n","import { TrackGroup, TrackMetadata, TrackPrompt, TrackScore } from \"@/types\";\nimport {\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n} from \"@/utils\";\n\nconst metadata = (body: TrackMetadata): Promise<boolean> => {\n if (!(body.metadata instanceof Object)) {\n throw new Error(\"Please provide a dictionary of metadata.\");\n }\n for (const [key, value] of Object.entries(body.metadata)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Please provide a dictionary of metadata with key value pair of strings.\"\n );\n }\n }\n return promptLayerTrackMetadata(body);\n};\n\nconst score = (body: TrackScore): Promise<boolean> => {\n if (typeof body.score !== \"number\") {\n throw new Error(\"Score must be a number\");\n }\n if (body.score < 0 || body.score > 100) {\n throw new Error(\"Score must be a number between 0 and 100.\");\n }\n return promptLayerTrackScore(body);\n};\n\nconst prompt = (body: TrackPrompt): Promise<boolean> => {\n if (!(body.prompt_input_variables instanceof Object)) {\n throw new Error(\"Prompt template input variable dictionary not provided.\");\n }\n return promptLayerTrackPrompt(body);\n};\n\nconst group = (body: TrackGroup) => promptLayerTrackGroup(body);\n\nexport { group, metadata, prompt, score };\n"],"mappings":"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","names":["src_exports","__export","promptlayer","__toCommonJS","groups_exports","__export","create","utils_exports","__export","getApiKey","getPromptTemplate","promptLayerAllPromptTemplates","promptLayerApiRequest","promptLayerCreateGroup","promptLayerGetPrompt","promptLayerPublishPrompt","promptLayerTrackGroup","promptLayerTrackMetadata","promptLayerTrackPrompt","promptLayerTrackScore","promptlayerApiHandler","publishPromptTemplate","URL_API_PROMPTLAYER","getApiKey","promptlayer","promptlayerApiHandler","body","__async","proxyGenerator","promptLayerApiRequest","response","data","warnOnBadResponse","e","promptLayerAllPromptTemplates","params","url","key","value","promptLayerGetPrompt","_a","_b","_c","throwOnBadResponse","promptLayerPublishPrompt","__spreadProps","__spreadValues","promptLayerTrackMetadata","promptLayerTrackScore","promptLayerTrackPrompt","promptLayerTrackGroup","promptLayerCreateGroup","getPromptTemplate","promptName","publishPromptTemplate","cleaned_result","results","prev","current","result","final_result","has_function_call","has_tool_calls","function_name","function_arguments","delta","_function","generator","__asyncGenerator","iter","__forAwait","more","temp","error","__await","request_response","main_message","create","__async","promptLayerCreateGroup","promptLayerBase","llm","function_name","provider","handler","target","args","newTarget","prop","receiver","value","_a","_b","_c","_d","request_start_time","provider_type","return_pl_id","pl_tags","response","resolve","reject","request_response","__async","promptlayerApiHandler","getApiKey","error","prompts_exports","__export","all","getPrompt","publishPrompt","all","params","promptLayerAllPromptTemplates","getPrompt","__async","prompt","promptLayerGetPrompt","prompt_template","metadata","publishPrompt","body","commit_message","promptLayerPublishPrompt","templates_exports","__export","get","publish","get","promptName","params","getPromptTemplate","publish","body","publishPromptTemplate","track_exports","__export","group","metadata","prompt","score","metadata","body","key","value","promptLayerTrackMetadata","score","promptLayerTrackScore","prompt","promptLayerTrackPrompt","group","promptLayerTrackGroup","promptlayer","utils_exports","track_exports","groups_exports","prompts_exports","templates_exports","target","prop","receiver","moduleName","module","promptLayerBase"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "promptlayer",
3
3
  "license": "MIT",
4
- "version": "0.0.9",
4
+ "version": "0.0.11",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "types": "dist/index.d.ts",
package/src/types.ts CHANGED
@@ -95,6 +95,11 @@ export type Function_ = {
95
95
  parameters: Record<string, unknown>;
96
96
  };
97
97
 
98
+ export type Tool = {
99
+ type: "function";
100
+ function: Function_;
101
+ };
102
+
98
103
  export type FunctionCall = {
99
104
  name: string;
100
105
  arguments: string;
@@ -116,6 +121,12 @@ export type UserMessage = {
116
121
  name?: string;
117
122
  };
118
123
 
124
+ export type ToolCall = {
125
+ id: string;
126
+ type: "function";
127
+ function: FunctionCall;
128
+ };
129
+
119
130
  export type AssistantMessage = {
120
131
  role: "assistant";
121
132
  input_variables?: string[];
@@ -123,6 +134,7 @@ export type AssistantMessage = {
123
134
  content?: Content[];
124
135
  function_call?: FunctionCall;
125
136
  name?: string;
137
+ tool_calls?: ToolCall[];
126
138
  };
127
139
 
128
140
  export type FunctionMessage = {
@@ -133,11 +145,21 @@ export type FunctionMessage = {
133
145
  name: string;
134
146
  };
135
147
 
148
+ export type ToolMessage = {
149
+ role: "tool";
150
+ input_variables?: string[];
151
+ template_format?: TemplateFormat;
152
+ content: Content[];
153
+ tool_call_id: string;
154
+ name?: string;
155
+ };
156
+
136
157
  export type Message =
137
158
  | SystemMessage
138
159
  | UserMessage
139
160
  | AssistantMessage
140
- | FunctionMessage;
161
+ | FunctionMessage
162
+ | ToolMessage;
141
163
 
142
164
  export type ChatFunctionCall = {
143
165
  name: string;
@@ -150,12 +172,21 @@ export type CompletionPromptTemplate = {
150
172
  input_variables?: string[];
151
173
  };
152
174
 
175
+ export type ChatToolChoice = {
176
+ type: "function";
177
+ function: ChatFunctionCall;
178
+ };
179
+
180
+ export type ToolChoice = string | ChatToolChoice;
181
+
153
182
  export type ChatPromptTemplate = {
154
183
  type: "chat";
155
184
  messages: Message[];
156
185
  functions?: Function_[];
157
186
  function_call?: "auto" | "none" | ChatFunctionCall;
158
187
  input_variables?: string[];
188
+ tools?: Tool[];
189
+ tool_choice?: ToolChoice;
159
190
  };
160
191
 
161
192
  export type PromptTemplate = CompletionPromptTemplate | ChatPromptTemplate;
package/src/utils.ts CHANGED
@@ -381,7 +381,7 @@ const publishPromptTemplate = async (body: PublishPromptTemplate) => {
381
381
  };
382
382
 
383
383
  const cleaned_result = (results: any[]) => {
384
- if ("completion" in results[0])
384
+ if ("completion" in results[0]) {
385
385
  return results.reduce(
386
386
  (prev, current) => ({
387
387
  ...current,
@@ -389,6 +389,8 @@ const cleaned_result = (results: any[]) => {
389
389
  }),
390
390
  {}
391
391
  );
392
+ }
393
+
392
394
  if ("text" in results[0].choices[0]) {
393
395
  let response = "";
394
396
  for (const result of results) {
@@ -397,20 +399,73 @@ const cleaned_result = (results: any[]) => {
397
399
  const final_result = structuredClone(results.at(-1));
398
400
  final_result.choices[0].text = response;
399
401
  return final_result;
400
- } else if ("delta" in results[0].choices[0]) {
401
- let response = { role: "", content: "" };
402
+ }
403
+
404
+ // Response was streamed
405
+ if ("delta" in results[0].choices[0]) {
406
+ let has_function_call = false;
407
+ let has_tool_calls = false;
408
+ let function_name = '';
409
+ let function_arguments = '';
410
+ let response: any = {role: "", content: ""};
411
+
402
412
  for (const result of results) {
403
- if ("role" in result.choices[0].delta) {
404
- response.role = result.choices[0].delta.role;
413
+ const delta = result.choices[0].delta
414
+
415
+ if (Object.keys(delta).length !== 0) {
416
+
417
+ // Function call (deprecated)
418
+ if ("function_call" in delta) {
419
+ has_function_call = true;
420
+ const _function = delta["function_call"]
421
+ if (_function.name) function_name = _function.name
422
+ function_arguments = `${function_arguments}${_function.arguments}`;
423
+ }
424
+
425
+ // Tool call
426
+ if ("tool_calls" in delta) {
427
+ has_tool_calls = true;
428
+ const _function = delta.tool_calls[0].function
429
+ if (_function.name) function_name = _function.name
430
+ function_arguments = `${function_arguments}${_function.arguments}`;
431
+ }
432
+
433
+ }
434
+
435
+ if ("role" in delta) {
436
+ response.role = delta.role;
437
+ }
438
+
439
+ if ("content" in delta) {
440
+ response.content = `${response["content"]}${delta.content}`;
405
441
  }
406
- if ("content" in result.choices[0].delta) {
407
- response.content = `${response["content"]}${result.choices[0].delta.content}`;
442
+ }
443
+
444
+ if (has_function_call) {
445
+ response['function_call'] = {
446
+ 'name': function_name,
447
+ 'arguments': function_arguments,
408
448
  }
409
449
  }
450
+
451
+ if (has_tool_calls) {
452
+ response['tool_calls'] = [
453
+ {
454
+ type: "function",
455
+ function: {
456
+ name: function_name,
457
+ arguments: function_arguments,
458
+ },
459
+ }
460
+ ]
461
+ }
462
+
410
463
  const final_result = structuredClone(results.at(-1));
411
464
  final_result.choices[0] = response;
465
+
412
466
  return final_result;
413
467
  }
468
+
414
469
  return "";
415
470
  };
416
471