promptlayer 0.0.11 → 0.0.13

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.
@@ -15,7 +15,7 @@ jobs:
15
15
 
16
16
  strategy:
17
17
  matrix:
18
- node-version: [16.x, 18.x, 20.x]
18
+ node-version: [18.x, 20.x]
19
19
  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
20
20
 
21
21
  steps:
package/README.md CHANGED
@@ -95,3 +95,7 @@ After making your first few requests, you should be able to see them in the Prom
95
95
  ## Contributing
96
96
 
97
97
  We welcome contributions to our open source project, including new features, infrastructure improvements, and better documentation. For more information or any questions, contact us at [hello@promptlayer.com](mailto:hello@promptlayer.com).
98
+
99
+ ## Requirements
100
+
101
+ - Node.js 18.x or higher
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 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};
1
+ var F=Object.defineProperty,ne=Object.defineProperties;var se=Object.getOwnPropertyDescriptors;var D=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,pe=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?F(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,h=(e,t)=>{for(var r in t||(t={}))ie.call(t,r)&&z(e,r,t[r]);if(D)for(var r of D(t))pe.call(t,r)&&z(e,r,t[r]);return e},g=(e,t)=>ne(e,se(t));var Q=(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 _=(e,t)=>{for(var r in t)F(e,r,{get:t[r],enumerable:!0})};var l=(e,t,r)=>new Promise((o,a)=>{var n=i=>{try{s(r.next(i))}catch(p){a(p)}},c=i=>{try{s(r.throw(i))}catch(p){a(p)}},s=i=>i.done?o(i.value):Promise.resolve(i.value).then(n,c);s((r=r.apply(e,t)).next())}),b=function(e,t){this[0]=e,this[1]=t},V=(e,t,r)=>{var o=(c,s,i,p)=>{try{var w=r[c](s),T=(s=w.value)instanceof b,y=w.done;Promise.resolve(T?s[0]:s).then(m=>T?o(c==="return"?c:"next",s[1]?{done:m.done,value:m.value}:m,i,p):i({value:m,done:y})).catch(m=>o("throw",m,i,p))}catch(m){p(m)}},a=c=>n[c]=s=>new Promise((i,p)=>o(c,s,i,p)),n={};return r=r.apply(e,t),n[Symbol.asyncIterator]=()=>n,a("next"),a("throw"),a("return"),n};var Z=(e,t,r)=>(t=e[H("asyncIterator")])?t.call(e):(e=e[H("iterator")](),t={},r=(o,a)=>(a=e[o])&&(t[o]=n=>new Promise((c,s,i)=>(n=a.call(e,n),i=n.done,Promise.resolve(n.value).then(p=>c({value:p,done:i}),s)))),r("next"),r("return"),t);var v={};_(v,{create:()=>ue});var q={};_(q,{getAllPromptTemplates:()=>E,getApiKey:()=>u,getPromptTemplate:()=>j,promptLayerAllPromptTemplates:()=>A,promptLayerApiRequest:()=>N,promptLayerCreateGroup:()=>W,promptLayerGetPrompt:()=>$,promptLayerPublishPrompt:()=>C,promptLayerTrackGroup:()=>O,promptLayerTrackMetadata:()=>G,promptLayerTrackPrompt:()=>I,promptLayerTrackScore:()=>S,promptlayerApiHandler:()=>R,publishPromptTemplate:()=>x});var f="https://api.promptlayer.com",u=()=>{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},R=e=>l(void 0,null,function*(){return e.request_response[Symbol.asyncIterator]!==void 0?me(e.request_response,e):yield N(e)}),N=e=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/track-request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),r=yield t.json();if(t.status!==200&&d(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(`${f}/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":u()}}),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 n,c,s;let t={prompt_name:e.prompt_name,version:(c=(n=e.version)==null?void 0:n.toString())!=null?c:"",label:(s=e.label)!=null?s:""},r=new URL(`${f}/library-get-prompt-template`);r.search=new URLSearchParams(t).toString();let o;try{o=yield fetch(r.toString(),{method:"GET",headers:{"X-API-KEY":u()}})}catch(i){throw new Error(`PromptLayer had the following error while getting your prompt: ${i}`)}let a=yield o.json();return o.status!==200&&ee(a,"PromptLayer had the following error while retrieving your prompt template"),a}),C=e=>l(void 0,null,function*(){let t;try{t=yield fetch(`${f}/library-publish-prompt-template`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},e),{api_key:u()}))})}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&&ee(r,"PromptLayer had the following error while publishing your prompt"),!0}),G=e=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/library-track-metadata`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},e),{api_key:u()}))}),r=yield t.json();if(t.status!==200)return d(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}),S=e=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/library-track-score`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},e),{api_key:u()}))}),r=yield t.json();if(t.status!==200)return d(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}),I=e=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/library-track-prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},e),{api_key:u()}))}),r=yield t.json();if(t.status!==200)return d(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}),O=e=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/track-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},e),{api_key:u()}))}),r=yield t.json();if(t.status!==200)return d(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}),W=()=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/create-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:u()})}),t=yield e.json();return e.status!==200?(d(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}}),j=(e,t)=>l(void 0,null,function*(){try{let r=new URL(`${f}/prompt-templates/${e}`),o=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":u()},body:JSON.stringify(g(h({},t),{api_key:u()}))}),a=yield o.json();return o.status!==200?(d(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}}),x=e=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/rest/prompt-templates`,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":u()},body:JSON.stringify({prompt_template:h({},e),prompt_version:h({},e)})}),r=yield t.json();return t.status===400&&d(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}`)}}),E=e=>l(void 0,null,function*(){var t;try{let r=new URL(`${f}/prompt-templates`);Object.entries(e||{}).forEach(([n,c])=>r.searchParams.append(n,c.toString()));let o=yield fetch(r,{headers:{"Content-Type":"application/json","X-API-KEY":u()}}),a=yield o.json();return o.status!==200?(d(a,"WARNING: While fetching all prompt templates PromptLayer had the following error"),null):(t=a.items)!=null?t:[]}catch(r){return console.warn(`WARNING: While fetching all prompt templates PromptLayer had the following error: ${r}`),null}}),ce=e=>{var c,s,i,p,w;let t=null,r,o={id:"",choices:[],created:Date.now(),model:"",object:"chat.completion"},a=e.at(-1);if(!a)return o;let n;for(let T of e){let y=T.choices[0].delta;y.content&&(t=`${t||""}${y.content||""}`),y.function_call&&(r={name:`${r?r.name:""}${y.function_call.name||""}`,arguments:`${r?r.arguments:""}${y.function_call.arguments||""}`});let m=(c=y.tool_calls)==null?void 0:c[0];if(m){n=n||[];let P=n.at(-1);if(!P||m.id){n.push({id:m.id||"",type:m.type||"function",function:{name:((s=m.function)==null?void 0:s.name)||"",arguments:((i=m.function)==null?void 0:i.arguments)||""}});continue}P.function.name=`${P.function.name}${((p=m.function)==null?void 0:p.name)||""}`,P.function.arguments=`${P.function.arguments}${((w=m.function)==null?void 0:w.arguments)||""}`}}return o.choices.push({finish_reason:a.choices[0].finish_reason||"stop",index:a.choices[0].index||0,logprobs:a.choices[0].logprobs||null,message:{role:"assistant",content:t,function_call:r||void 0,tool_calls:n||void 0}}),o.id=a.id,o.model=a.model,o.created=a.created,o.system_fingerprint=a.system_fingerprint,o},le=e=>{if("completion"in e[0])return e.reduce((t,r)=>g(h({},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=ce(e);return t.choices[0]=h(h({},t.choices[0]),t.choices[0].message),t}return""};function me(e,t){return V(this,null,function*(){let r=[];try{for(var n=Z(e),c,s,i;c=!(s=yield new b(n.next())).done;c=!1){let p=s.value;yield p,r.push(p)}}catch(s){i=[s]}finally{try{c&&(s=n.return)&&(yield new b(s.call(n)))}finally{if(i)throw i[0]}}let o=le(r);yield yield new b(N(g(h({},t),{request_response:o,request_end_time:new Date().toISOString()})))})}var d=(e,t)=>{try{console.warn(`${t}: ${e.message}`)}catch(r){console.warn(`${t}: ${e}`)}},ee=(e,t)=>{throw"message"in e?new Error(`${t}: ${e.message}`):new Error(`${t}: ${e.message}`)};var ue=()=>l(void 0,null,function*(){return yield W()});var te=(e,t="",r="openai")=>{let o={construct:(a,n)=>{let c=Reflect.construct(a,n);return Object.defineProperties(c,{function_name:{value:t,writable:!0},provider:{value:r}}),new Proxy(c,o)},get:(a,n,c)=>{let s=a[n],i=`${Reflect.get(a,"function_name")}.${n.toString()}`;return typeof s=="object"?(Object.defineProperties(s,{function_name:{value:i,writable:!0},provider:{value:r}}),new Proxy(s,o)):typeof s=="function"?(...p)=>{var M,U,X,B;let w=new Date().toISOString(),T=Reflect.get(a,"provider"),y=(M=p[0])==null?void 0:M.return_pl_id,m=(U=p[0])==null?void 0:U.pl_tags;(X=p[0])==null||delete X.return_pl_id,(B=p[0])==null||delete B.pl_tags;let P=Reflect.apply(s,a,p);return P instanceof Promise?new Promise((re,oe)=>{P.then(L=>l(void 0,null,function*(){let ae=yield R({api_key:u(),provider_type:T,function_name:i,request_start_time:w,request_end_time:new Date().toISOString(),request_response:L,kwargs:p[0],return_pl_id:y,tags:m});re(ae)})).catch(L=>{oe(L)})}):P}:Reflect.get(a,n,c)}};return new Proxy(e,o)};var J={};_(J,{all:()=>he,get:()=>fe,publish:()=>ye});var he=e=>A(e),fe=e=>l(void 0,null,function*(){let t=yield $(e),r=t.prompt_template,o=t.metadata;return{prompt_template:r,metadata:o}}),ye=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 C(e)};var Y={};_(Y,{all:()=>de,get:()=>Pe,publish:()=>ge});var Pe=(e,t)=>j(e,t),ge=e=>x(e),de=e=>E(e);var K={};_(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 G(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 S(e)},_e=e=>{if(!(e.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return I(e)},be=e=>O(e);var k=new Proxy({OpenAI:{},Anthropic:{},api_key:process.env.PROMPTLAYER_API_KEY,utils:q,track:K,groups:v,prompts:J,templates:Y},{get:(e,t,r)=>{if(["OpenAI","Anthropic"].includes(t.toString())){let a=Q(t==="OpenAI"?"openai":"@anthropic-ai/sdk").default;return te(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 }\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"]}
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 GetPromptTemplateResponse,\n LegacyPublishPromptTemplate,\n ListPromptTemplatesResponse,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n} from \"@/types\";\nimport { ChatCompletion, ChatCompletionChunk } from \"openai/resources\";\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 as Promise<GetPromptTemplateResponse>;\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 getAllPromptTemplates = async (params?: Partial<Pagination>) => {\n try {\n const url = new URL(`${URL_API_PROMPTLAYER}/prompt-templates`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value.toString())\n );\n const response = await fetch(url, {\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 warnOnBadResponse(\n data,\n \"WARNING: While fetching all prompt templates PromptLayer had the following error\"\n );\n return null;\n }\n return (data.items ?? []) as Promise<Array<ListPromptTemplatesResponse>>;\n } catch (e) {\n console.warn(\n `WARNING: While fetching all prompt templates PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst mapChatCompletionChunk = (\n results: ChatCompletionChunk[]\n): ChatCompletion => {\n let content: ChatCompletion.Choice[\"message\"][\"content\"] = null;\n let functionCall: ChatCompletion.Choice[\"message\"][\"function_call\"] =\n undefined;\n const response: ChatCompletion = {\n id: \"\",\n choices: [],\n created: Date.now(),\n model: \"\",\n object: \"chat.completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let toolCalls: ChatCompletion.Choice[\"message\"][\"tool_calls\"] = undefined;\n for (const result of results) {\n const delta = result.choices[0].delta;\n\n if (delta.content) {\n content = `${content || \"\"}${delta.content || \"\"}`;\n }\n if (delta.function_call) {\n functionCall = {\n name: `${functionCall ? functionCall.name : \"\"}${\n delta.function_call.name || \"\"\n }`,\n arguments: `${functionCall ? functionCall.arguments : \"\"}${\n delta.function_call.arguments || \"\"\n }`,\n };\n }\n const toolCall = delta.tool_calls?.[0];\n if (toolCall) {\n toolCalls = toolCalls || [];\n const lastToolCall = toolCalls.at(-1);\n if (!lastToolCall || toolCall.id) {\n toolCalls.push({\n id: toolCall.id || \"\",\n type: toolCall.type || \"function\",\n function: {\n name: toolCall.function?.name || \"\",\n arguments: toolCall.function?.arguments || \"\",\n },\n });\n continue;\n }\n lastToolCall.function.name = `${lastToolCall.function.name}${\n toolCall.function?.name || \"\"\n }`;\n lastToolCall.function.arguments = `${lastToolCall.function.arguments}${\n toolCall.function?.arguments || \"\"\n }`;\n }\n }\n response.choices.push({\n finish_reason: lastResult.choices[0].finish_reason || \"stop\",\n index: lastResult.choices[0].index || 0,\n logprobs: lastResult.choices[0].logprobs || null,\n message: {\n role: \"assistant\",\n content,\n function_call: functionCall ? functionCall : undefined,\n tool_calls: toolCalls ? toolCalls : undefined,\n },\n });\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.created = lastResult.created;\n response.system_fingerprint = lastResult.system_fingerprint;\n return response;\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 if (\"delta\" in results[0].choices[0]) {\n const response = mapChatCompletionChunk(results);\n response.choices[0] = {\n ...response.choices[0],\n ...response.choices[0].message,\n };\n return response;\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 getAllPromptTemplates,\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 {\n GetPromptTemplateParams,\n Pagination,\n PublishPromptTemplate,\n} from \"@/types\";\nimport {\n getAllPromptTemplates,\n getPromptTemplate,\n publishPromptTemplate,\n} 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\nexport const all = (params?: Pagination) => getAllPromptTemplates(params);\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","getAllPromptTemplates","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","getAllPromptTemplates","mapChatCompletionChunk","results","_d","_e","content","functionCall","lastResult","toolCalls","result","delta","toolCall","lastToolCall","cleaned_result","prev","current","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","all","get","publish","get","promptName","params","getPromptTemplate","publish","body","publishPromptTemplate","all","getAllPromptTemplates","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
@@ -181,42 +181,53 @@ type PromptVersion = {
181
181
  metadata?: Metadata;
182
182
  };
183
183
  type PublishPromptTemplate = BasePromptTemplate & PromptVersion;
184
- type PublishPromptTemplateResponse = {
184
+ interface BasePromptTemplateResponse {
185
185
  id: number;
186
186
  prompt_name: string;
187
187
  tags: string[];
188
188
  prompt_template: PromptTemplate;
189
189
  commit_message?: string;
190
190
  metadata?: Metadata;
191
- };
191
+ }
192
+ interface PublishPromptTemplateResponse extends BasePromptTemplateResponse {
193
+ }
194
+ interface GetPromptTemplateResponse extends BasePromptTemplateResponse {
195
+ version: number;
196
+ llm_kwargs: Record<string, unknown> | null;
197
+ }
198
+ interface ListPromptTemplatesResponse extends BasePromptTemplateResponse {
199
+ version: number;
200
+ }
192
201
 
193
202
  /**
194
203
  * @description List all prompts on PromptLayer.
195
204
  * @param params
196
205
  */
197
- declare const all: (params?: Pagination) => Promise<any>;
206
+ declare const all$1: (params?: Pagination) => Promise<any>;
198
207
  /**
199
208
  * Get a prompt template from PromptLayer.
200
209
  */
201
210
  declare const getPrompt: (params: GetPromptTemplate) => Promise<LegacyPromptTemplate>;
202
211
  declare const publishPrompt: (body: LegacyPublishPromptTemplate) => Promise<boolean>;
203
212
 
204
- declare const prompts_all: typeof all;
205
213
  declare namespace prompts {
206
214
  export {
207
- prompts_all as all,
215
+ all$1 as all,
208
216
  getPrompt as get,
209
217
  publishPrompt as publish,
210
218
  };
211
219
  }
212
220
 
213
- declare const get: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<any>;
221
+ declare const get: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<GetPromptTemplateResponse | null>;
214
222
  declare const publish: (body: PublishPromptTemplate) => Promise<PublishPromptTemplateResponse | undefined>;
223
+ declare const all: (params?: Pagination) => Promise<ListPromptTemplatesResponse[] | null>;
215
224
 
225
+ declare const templates_all: typeof all;
216
226
  declare const templates_get: typeof get;
217
227
  declare const templates_publish: typeof publish;
218
228
  declare namespace templates {
219
229
  export {
230
+ templates_all as all,
220
231
  templates_get as get,
221
232
  templates_publish as publish,
222
233
  };
@@ -260,9 +271,11 @@ declare const promptLayerTrackScore: (body: TrackScore) => Promise<boolean>;
260
271
  declare const promptLayerTrackPrompt: (body: TrackPrompt) => Promise<boolean>;
261
272
  declare const promptLayerTrackGroup: (body: TrackGroup) => Promise<boolean>;
262
273
  declare const promptLayerCreateGroup: () => Promise<number | boolean>;
263
- declare const getPromptTemplate: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<any>;
274
+ declare const getPromptTemplate: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<GetPromptTemplateResponse | null>;
264
275
  declare const publishPromptTemplate: (body: PublishPromptTemplate) => Promise<PublishPromptTemplateResponse | undefined>;
276
+ declare const getAllPromptTemplates: (params?: Partial<Pagination>) => Promise<ListPromptTemplatesResponse[] | null>;
265
277
 
278
+ declare const utils_getAllPromptTemplates: typeof getAllPromptTemplates;
266
279
  declare const utils_getApiKey: typeof getApiKey;
267
280
  declare const utils_getPromptTemplate: typeof getPromptTemplate;
268
281
  declare const utils_promptLayerAllPromptTemplates: typeof promptLayerAllPromptTemplates;
@@ -278,6 +291,7 @@ declare const utils_promptlayerApiHandler: typeof promptlayerApiHandler;
278
291
  declare const utils_publishPromptTemplate: typeof publishPromptTemplate;
279
292
  declare namespace utils {
280
293
  export {
294
+ utils_getAllPromptTemplates as getAllPromptTemplates,
281
295
  utils_getApiKey as getApiKey,
282
296
  utils_getPromptTemplate as getPromptTemplate,
283
297
  utils_promptLayerAllPromptTemplates as promptLayerAllPromptTemplates,
package/dist/index.d.ts CHANGED
@@ -181,42 +181,53 @@ type PromptVersion = {
181
181
  metadata?: Metadata;
182
182
  };
183
183
  type PublishPromptTemplate = BasePromptTemplate & PromptVersion;
184
- type PublishPromptTemplateResponse = {
184
+ interface BasePromptTemplateResponse {
185
185
  id: number;
186
186
  prompt_name: string;
187
187
  tags: string[];
188
188
  prompt_template: PromptTemplate;
189
189
  commit_message?: string;
190
190
  metadata?: Metadata;
191
- };
191
+ }
192
+ interface PublishPromptTemplateResponse extends BasePromptTemplateResponse {
193
+ }
194
+ interface GetPromptTemplateResponse extends BasePromptTemplateResponse {
195
+ version: number;
196
+ llm_kwargs: Record<string, unknown> | null;
197
+ }
198
+ interface ListPromptTemplatesResponse extends BasePromptTemplateResponse {
199
+ version: number;
200
+ }
192
201
 
193
202
  /**
194
203
  * @description List all prompts on PromptLayer.
195
204
  * @param params
196
205
  */
197
- declare const all: (params?: Pagination) => Promise<any>;
206
+ declare const all$1: (params?: Pagination) => Promise<any>;
198
207
  /**
199
208
  * Get a prompt template from PromptLayer.
200
209
  */
201
210
  declare const getPrompt: (params: GetPromptTemplate) => Promise<LegacyPromptTemplate>;
202
211
  declare const publishPrompt: (body: LegacyPublishPromptTemplate) => Promise<boolean>;
203
212
 
204
- declare const prompts_all: typeof all;
205
213
  declare namespace prompts {
206
214
  export {
207
- prompts_all as all,
215
+ all$1 as all,
208
216
  getPrompt as get,
209
217
  publishPrompt as publish,
210
218
  };
211
219
  }
212
220
 
213
- declare const get: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<any>;
221
+ declare const get: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<GetPromptTemplateResponse | null>;
214
222
  declare const publish: (body: PublishPromptTemplate) => Promise<PublishPromptTemplateResponse | undefined>;
223
+ declare const all: (params?: Pagination) => Promise<ListPromptTemplatesResponse[] | null>;
215
224
 
225
+ declare const templates_all: typeof all;
216
226
  declare const templates_get: typeof get;
217
227
  declare const templates_publish: typeof publish;
218
228
  declare namespace templates {
219
229
  export {
230
+ templates_all as all,
220
231
  templates_get as get,
221
232
  templates_publish as publish,
222
233
  };
@@ -260,9 +271,11 @@ declare const promptLayerTrackScore: (body: TrackScore) => Promise<boolean>;
260
271
  declare const promptLayerTrackPrompt: (body: TrackPrompt) => Promise<boolean>;
261
272
  declare const promptLayerTrackGroup: (body: TrackGroup) => Promise<boolean>;
262
273
  declare const promptLayerCreateGroup: () => Promise<number | boolean>;
263
- declare const getPromptTemplate: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<any>;
274
+ declare const getPromptTemplate: (promptName: string, params?: Partial<GetPromptTemplateParams>) => Promise<GetPromptTemplateResponse | null>;
264
275
  declare const publishPromptTemplate: (body: PublishPromptTemplate) => Promise<PublishPromptTemplateResponse | undefined>;
276
+ declare const getAllPromptTemplates: (params?: Partial<Pagination>) => Promise<ListPromptTemplatesResponse[] | null>;
265
277
 
278
+ declare const utils_getAllPromptTemplates: typeof getAllPromptTemplates;
266
279
  declare const utils_getApiKey: typeof getApiKey;
267
280
  declare const utils_getPromptTemplate: typeof getPromptTemplate;
268
281
  declare const utils_promptLayerAllPromptTemplates: typeof promptLayerAllPromptTemplates;
@@ -278,6 +291,7 @@ declare const utils_promptlayerApiHandler: typeof promptlayerApiHandler;
278
291
  declare const utils_publishPromptTemplate: typeof publishPromptTemplate;
279
292
  declare namespace utils {
280
293
  export {
294
+ utils_getAllPromptTemplates as getAllPromptTemplates,
281
295
  utils_getApiKey as getApiKey,
282
296
  utils_getPromptTemplate as getPromptTemplate,
283
297
  utils_promptLayerAllPromptTemplates as promptLayerAllPromptTemplates,
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
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});
1
+ "use strict";var L=Object.defineProperty,ne=Object.defineProperties,se=Object.getOwnPropertyDescriptor,ie=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertyNames,H=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,ce=Object.prototype.propertyIsEnumerable;var z=(t,e)=>{if(e=Symbol[t])return e;throw Error("Symbol."+t+" is not defined")};var F=(t,e,r)=>e in t?L(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,h=(t,e)=>{for(var r in e||(e={}))Q.call(e,r)&&F(t,r,e[r]);if(H)for(var r of H(e))ce.call(e,r)&&F(t,r,e[r]);return t},g=(t,e)=>ne(t,ie(e));var _=(t,e)=>{for(var r in e)L(t,r,{get:e[r],enumerable:!0})},le=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of pe(e))!Q.call(t,a)&&a!==r&&L(t,a,{get:()=>e[a],enumerable:!(o=se(e,a))||o.enumerable});return t};var me=t=>le(L({},"__esModule",{value:!0}),t);var l=(t,e,r)=>new Promise((o,a)=>{var n=i=>{try{s(r.next(i))}catch(p){a(p)}},c=i=>{try{s(r.throw(i))}catch(p){a(p)}},s=i=>i.done?o(i.value):Promise.resolve(i.value).then(n,c);s((r=r.apply(t,e)).next())}),b=function(t,e){this[0]=t,this[1]=e},V=(t,e,r)=>{var o=(c,s,i,p)=>{try{var w=r[c](s),T=(s=w.value)instanceof b,y=w.done;Promise.resolve(T?s[0]:s).then(m=>T?o(c==="return"?c:"next",s[1]?{done:m.done,value:m.value}:m,i,p):i({value:m,done:y})).catch(m=>o("throw",m,i,p))}catch(m){p(m)}},a=c=>n[c]=s=>new Promise((i,p)=>o(c,s,i,p)),n={};return r=r.apply(t,e),n[Symbol.asyncIterator]=()=>n,a("next"),a("throw"),a("return"),n};var Z=(t,e,r)=>(e=t[z("asyncIterator")])?e.call(t):(t=t[z("iterator")](),e={},r=(o,a)=>(a=t[o])&&(e[o]=n=>new Promise((c,s,i)=>(n=a.call(t,n),i=n.done,Promise.resolve(n.value).then(p=>c({value:p,done:i}),s)))),r("next"),r("return"),e);var Ne={};_(Ne,{promptlayer:()=>k});module.exports=me(Ne);var J={};_(J,{create:()=>ye});var v={};_(v,{getAllPromptTemplates:()=>q,getApiKey:()=>u,getPromptTemplate:()=>x,promptLayerAllPromptTemplates:()=>$,promptLayerApiRequest:()=>A,promptLayerCreateGroup:()=>j,promptLayerGetPrompt:()=>C,promptLayerPublishPrompt:()=>G,promptLayerTrackGroup:()=>W,promptLayerTrackMetadata:()=>S,promptLayerTrackPrompt:()=>O,promptLayerTrackScore:()=>I,promptlayerApiHandler:()=>N,publishPromptTemplate:()=>E});var f="https://api.promptlayer.com",u=()=>{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=t=>l(void 0,null,function*(){return t.request_response[Symbol.asyncIterator]!==void 0?fe(t.request_response,t):yield A(t)}),A=t=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/track-request`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=yield e.json();if(e.status!==200&&d(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}),$=t=>l(void 0,null,function*(){let e=new URL(`${f}/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":u()}}),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}`)}}),C=t=>l(void 0,null,function*(){var n,c,s;let e={prompt_name:t.prompt_name,version:(c=(n=t.version)==null?void 0:n.toString())!=null?c:"",label:(s=t.label)!=null?s:""},r=new URL(`${f}/library-get-prompt-template`);r.search=new URLSearchParams(e).toString();let o;try{o=yield fetch(r.toString(),{method:"GET",headers:{"X-API-KEY":u()}})}catch(i){throw new Error(`PromptLayer had the following error while getting your prompt: ${i}`)}let a=yield o.json();return o.status!==200&&ee(a,"PromptLayer had the following error while retrieving your prompt template"),a}),G=t=>l(void 0,null,function*(){let e;try{e=yield fetch(`${f}/library-publish-prompt-template`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},t),{api_key:u()}))})}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&&ee(r,"PromptLayer had the following error while publishing your prompt"),!0}),S=t=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/library-track-metadata`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},t),{api_key:u()}))}),r=yield e.json();if(e.status!==200)return d(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}),I=t=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/library-track-score`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},t),{api_key:u()}))}),r=yield e.json();if(e.status!==200)return d(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}),O=t=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/library-track-prompt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},t),{api_key:u()}))}),r=yield e.json();if(e.status!==200)return d(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}),W=t=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/track-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g(h({},t),{api_key:u()}))}),r=yield e.json();if(e.status!==200)return d(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}),j=()=>l(void 0,null,function*(){try{let t=yield fetch(`${f}/create-group`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({api_key:u()})}),e=yield t.json();return t.status!==200?(d(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}}),x=(t,e)=>l(void 0,null,function*(){try{let r=new URL(`${f}/prompt-templates/${t}`),o=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":u()},body:JSON.stringify(g(h({},e),{api_key:u()}))}),a=yield o.json();return o.status!==200?(d(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=t=>l(void 0,null,function*(){try{let e=yield fetch(`${f}/rest/prompt-templates`,{method:"POST",headers:{"Content-Type":"application/json","X-API-KEY":u()},body:JSON.stringify({prompt_template:h({},t),prompt_version:h({},t)})}),r=yield e.json();return e.status===400&&d(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}`)}}),q=t=>l(void 0,null,function*(){var e;try{let r=new URL(`${f}/prompt-templates`);Object.entries(t||{}).forEach(([n,c])=>r.searchParams.append(n,c.toString()));let o=yield fetch(r,{headers:{"Content-Type":"application/json","X-API-KEY":u()}}),a=yield o.json();return o.status!==200?(d(a,"WARNING: While fetching all prompt templates PromptLayer had the following error"),null):(e=a.items)!=null?e:[]}catch(r){return console.warn(`WARNING: While fetching all prompt templates PromptLayer had the following error: ${r}`),null}}),ue=t=>{var c,s,i,p,w;let e=null,r,o={id:"",choices:[],created:Date.now(),model:"",object:"chat.completion"},a=t.at(-1);if(!a)return o;let n;for(let T of t){let y=T.choices[0].delta;y.content&&(e=`${e||""}${y.content||""}`),y.function_call&&(r={name:`${r?r.name:""}${y.function_call.name||""}`,arguments:`${r?r.arguments:""}${y.function_call.arguments||""}`});let m=(c=y.tool_calls)==null?void 0:c[0];if(m){n=n||[];let P=n.at(-1);if(!P||m.id){n.push({id:m.id||"",type:m.type||"function",function:{name:((s=m.function)==null?void 0:s.name)||"",arguments:((i=m.function)==null?void 0:i.arguments)||""}});continue}P.function.name=`${P.function.name}${((p=m.function)==null?void 0:p.name)||""}`,P.function.arguments=`${P.function.arguments}${((w=m.function)==null?void 0:w.arguments)||""}`}}return o.choices.push({finish_reason:a.choices[0].finish_reason||"stop",index:a.choices[0].index||0,logprobs:a.choices[0].logprobs||null,message:{role:"assistant",content:e,function_call:r||void 0,tool_calls:n||void 0}}),o.id=a.id,o.model=a.model,o.created=a.created,o.system_fingerprint=a.system_fingerprint,o},he=t=>{if("completion"in t[0])return t.reduce((e,r)=>g(h({},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}if("delta"in t[0].choices[0]){let e=ue(t);return e.choices[0]=h(h({},e.choices[0]),e.choices[0].message),e}return""};function fe(t,e){return V(this,null,function*(){let r=[];try{for(var n=Z(t),c,s,i;c=!(s=yield new b(n.next())).done;c=!1){let p=s.value;yield p,r.push(p)}}catch(s){i=[s]}finally{try{c&&(s=n.return)&&(yield new b(s.call(n)))}finally{if(i)throw i[0]}}let o=he(r);yield yield new b(A(g(h({},e),{request_response:o,request_end_time:new Date().toISOString()})))})}var d=(t,e)=>{try{console.warn(`${e}: ${t.message}`)}catch(r){console.warn(`${e}: ${t}`)}},ee=(t,e)=>{throw"message"in t?new Error(`${e}: ${t.message}`):new Error(`${e}: ${t.message}`)};var ye=()=>l(void 0,null,function*(){return yield j()});var te=(t,e="",r="openai")=>{let o={construct:(a,n)=>{let c=Reflect.construct(a,n);return Object.defineProperties(c,{function_name:{value:e,writable:!0},provider:{value:r}}),new Proxy(c,o)},get:(a,n,c)=>{let s=a[n],i=`${Reflect.get(a,"function_name")}.${n.toString()}`;return typeof s=="object"?(Object.defineProperties(s,{function_name:{value:i,writable:!0},provider:{value:r}}),new Proxy(s,o)):typeof s=="function"?(...p)=>{var U,X,B,D;let w=new Date().toISOString(),T=Reflect.get(a,"provider"),y=(U=p[0])==null?void 0:U.return_pl_id,m=(X=p[0])==null?void 0:X.pl_tags;(B=p[0])==null||delete B.return_pl_id,(D=p[0])==null||delete D.pl_tags;let P=Reflect.apply(s,a,p);return P instanceof Promise?new Promise((re,oe)=>{P.then(R=>l(void 0,null,function*(){let ae=yield N({api_key:u(),provider_type:T,function_name:i,request_start_time:w,request_end_time:new Date().toISOString(),request_response:R,kwargs:p[0],return_pl_id:y,tags:m});re(ae)})).catch(R=>{oe(R)})}):P}:Reflect.get(a,n,c)}};return new Proxy(t,o)};var Y={};_(Y,{all:()=>Pe,get:()=>ge,publish:()=>de});var Pe=t=>$(t),ge=t=>l(void 0,null,function*(){let e=yield C(t),r=e.prompt_template,o=e.metadata;return{prompt_template:r,metadata:o}}),de=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 G(t)};var K={};_(K,{all:()=>_e,get:()=>we,publish:()=>Te});var we=(t,e)=>x(t,e),Te=t=>E(t),_e=t=>q(t);var M={};_(M,{group:()=>Re,metadata:()=>be,prompt:()=>ke,score:()=>Le});var be=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 S(t)},Le=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 I(t)},ke=t=>{if(!(t.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return O(t)},Re=t=>W(t);var k=new Proxy({OpenAI:{},Anthropic:{},api_key:process.env.PROMPTLAYER_API_KEY,utils:v,track:M,groups:J,prompts:Y,templates:K},{get:(t,e,r)=>{if(["OpenAI","Anthropic"].includes(e.toString())){let o=e==="OpenAI"?"openai":"@anthropic-ai/sdk",a=require(o).default;return te(a,e.toString().toLowerCase(),e.toString().toLowerCase())}return Reflect.get(t,e,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 }\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"]}
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 GetPromptTemplateResponse,\n LegacyPublishPromptTemplate,\n ListPromptTemplatesResponse,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n} from \"@/types\";\nimport { ChatCompletion, ChatCompletionChunk } from \"openai/resources\";\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 as Promise<GetPromptTemplateResponse>;\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 getAllPromptTemplates = async (params?: Partial<Pagination>) => {\n try {\n const url = new URL(`${URL_API_PROMPTLAYER}/prompt-templates`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value.toString())\n );\n const response = await fetch(url, {\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 warnOnBadResponse(\n data,\n \"WARNING: While fetching all prompt templates PromptLayer had the following error\"\n );\n return null;\n }\n return (data.items ?? []) as Promise<Array<ListPromptTemplatesResponse>>;\n } catch (e) {\n console.warn(\n `WARNING: While fetching all prompt templates PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst mapChatCompletionChunk = (\n results: ChatCompletionChunk[]\n): ChatCompletion => {\n let content: ChatCompletion.Choice[\"message\"][\"content\"] = null;\n let functionCall: ChatCompletion.Choice[\"message\"][\"function_call\"] =\n undefined;\n const response: ChatCompletion = {\n id: \"\",\n choices: [],\n created: Date.now(),\n model: \"\",\n object: \"chat.completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let toolCalls: ChatCompletion.Choice[\"message\"][\"tool_calls\"] = undefined;\n for (const result of results) {\n const delta = result.choices[0].delta;\n\n if (delta.content) {\n content = `${content || \"\"}${delta.content || \"\"}`;\n }\n if (delta.function_call) {\n functionCall = {\n name: `${functionCall ? functionCall.name : \"\"}${\n delta.function_call.name || \"\"\n }`,\n arguments: `${functionCall ? functionCall.arguments : \"\"}${\n delta.function_call.arguments || \"\"\n }`,\n };\n }\n const toolCall = delta.tool_calls?.[0];\n if (toolCall) {\n toolCalls = toolCalls || [];\n const lastToolCall = toolCalls.at(-1);\n if (!lastToolCall || toolCall.id) {\n toolCalls.push({\n id: toolCall.id || \"\",\n type: toolCall.type || \"function\",\n function: {\n name: toolCall.function?.name || \"\",\n arguments: toolCall.function?.arguments || \"\",\n },\n });\n continue;\n }\n lastToolCall.function.name = `${lastToolCall.function.name}${\n toolCall.function?.name || \"\"\n }`;\n lastToolCall.function.arguments = `${lastToolCall.function.arguments}${\n toolCall.function?.arguments || \"\"\n }`;\n }\n }\n response.choices.push({\n finish_reason: lastResult.choices[0].finish_reason || \"stop\",\n index: lastResult.choices[0].index || 0,\n logprobs: lastResult.choices[0].logprobs || null,\n message: {\n role: \"assistant\",\n content,\n function_call: functionCall ? functionCall : undefined,\n tool_calls: toolCalls ? toolCalls : undefined,\n },\n });\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.created = lastResult.created;\n response.system_fingerprint = lastResult.system_fingerprint;\n return response;\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 if (\"delta\" in results[0].choices[0]) {\n const response = mapChatCompletionChunk(results);\n response.choices[0] = {\n ...response.choices[0],\n ...response.choices[0].message,\n };\n return response;\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 getAllPromptTemplates,\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 {\n GetPromptTemplateParams,\n Pagination,\n PublishPromptTemplate,\n} from \"@/types\";\nimport {\n getAllPromptTemplates,\n getPromptTemplate,\n publishPromptTemplate,\n} 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\nexport const all = (params?: Pagination) => getAllPromptTemplates(params);\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","getAllPromptTemplates","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","getAllPromptTemplates","mapChatCompletionChunk","results","_d","_e","content","functionCall","lastResult","toolCalls","result","delta","toolCall","lastToolCall","cleaned_result","prev","current","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","all","get","publish","get","promptName","params","getPromptTemplate","publish","body","publishPromptTemplate","all","getAllPromptTemplates","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.11",
4
+ "version": "0.0.13",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "types": "dist/index.d.ts",
@@ -16,7 +16,9 @@
16
16
  "release": "npm run build && npm publish"
17
17
  },
18
18
  "devDependencies": {
19
+ "@anthropic-ai/sdk": "^0.14.1",
19
20
  "@types/node": "^20.8.0",
21
+ "openai": "^4.28.4",
20
22
  "tsup": "^7.2.0",
21
23
  "typescript": "^5.2.2"
22
24
  }
package/src/templates.ts CHANGED
@@ -1,5 +1,13 @@
1
- import { GetPromptTemplateParams, PublishPromptTemplate } from "@/types";
2
- import { getPromptTemplate, publishPromptTemplate } from "@/utils";
1
+ import {
2
+ GetPromptTemplateParams,
3
+ Pagination,
4
+ PublishPromptTemplate,
5
+ } from "@/types";
6
+ import {
7
+ getAllPromptTemplates,
8
+ getPromptTemplate,
9
+ publishPromptTemplate,
10
+ } from "@/utils";
3
11
 
4
12
  export const get = (
5
13
  promptName: string,
@@ -8,3 +16,5 @@ export const get = (
8
16
 
9
17
  export const publish = (body: PublishPromptTemplate) =>
10
18
  publishPromptTemplate(body);
19
+
20
+ export const all = (params?: Pagination) => getAllPromptTemplates(params);
package/src/types.ts CHANGED
@@ -214,11 +214,24 @@ export type PromptVersion = {
214
214
 
215
215
  export type PublishPromptTemplate = BasePromptTemplate & PromptVersion;
216
216
 
217
- export type PublishPromptTemplateResponse = {
217
+ export interface BasePromptTemplateResponse {
218
218
  id: number;
219
219
  prompt_name: string;
220
220
  tags: string[];
221
221
  prompt_template: PromptTemplate;
222
222
  commit_message?: string;
223
223
  metadata?: Metadata;
224
- };
224
+ }
225
+
226
+ export interface PublishPromptTemplateResponse
227
+ extends BasePromptTemplateResponse {}
228
+
229
+ export interface GetPromptTemplateResponse extends BasePromptTemplateResponse {
230
+ version: number;
231
+ llm_kwargs: Record<string, unknown> | null;
232
+ }
233
+
234
+ export interface ListPromptTemplatesResponse
235
+ extends BasePromptTemplateResponse {
236
+ version: number;
237
+ }
package/src/utils.ts CHANGED
@@ -2,7 +2,9 @@ import { promptlayer } from "@/index";
2
2
  import {
3
3
  GetPromptTemplate,
4
4
  GetPromptTemplateParams,
5
+ GetPromptTemplateResponse,
5
6
  LegacyPublishPromptTemplate,
7
+ ListPromptTemplatesResponse,
6
8
  Pagination,
7
9
  PublishPromptTemplate,
8
10
  PublishPromptTemplateResponse,
@@ -12,6 +14,7 @@ import {
12
14
  TrackRequest,
13
15
  TrackScore,
14
16
  } from "@/types";
17
+ import { ChatCompletion, ChatCompletionChunk } from "openai/resources";
15
18
 
16
19
  const URL_API_PROMPTLAYER = "https://api.promptlayer.com";
17
20
 
@@ -340,7 +343,7 @@ const getPromptTemplate = async (
340
343
  );
341
344
  return null;
342
345
  }
343
- return data;
346
+ return data as Promise<GetPromptTemplateResponse>;
344
347
  } catch (e) {
345
348
  console.warn(
346
349
  `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`
@@ -380,6 +383,108 @@ const publishPromptTemplate = async (body: PublishPromptTemplate) => {
380
383
  }
381
384
  };
382
385
 
386
+ const getAllPromptTemplates = async (params?: Partial<Pagination>) => {
387
+ try {
388
+ const url = new URL(`${URL_API_PROMPTLAYER}/prompt-templates`);
389
+ Object.entries(params || {}).forEach(([key, value]) =>
390
+ url.searchParams.append(key, value.toString())
391
+ );
392
+ const response = await fetch(url, {
393
+ headers: {
394
+ "Content-Type": "application/json",
395
+ "X-API-KEY": getApiKey(),
396
+ },
397
+ });
398
+ const data = await response.json();
399
+ if (response.status !== 200) {
400
+ warnOnBadResponse(
401
+ data,
402
+ "WARNING: While fetching all prompt templates PromptLayer had the following error"
403
+ );
404
+ return null;
405
+ }
406
+ return (data.items ?? []) as Promise<Array<ListPromptTemplatesResponse>>;
407
+ } catch (e) {
408
+ console.warn(
409
+ `WARNING: While fetching all prompt templates PromptLayer had the following error: ${e}`
410
+ );
411
+ return null;
412
+ }
413
+ };
414
+
415
+ const mapChatCompletionChunk = (
416
+ results: ChatCompletionChunk[]
417
+ ): ChatCompletion => {
418
+ let content: ChatCompletion.Choice["message"]["content"] = null;
419
+ let functionCall: ChatCompletion.Choice["message"]["function_call"] =
420
+ undefined;
421
+ const response: ChatCompletion = {
422
+ id: "",
423
+ choices: [],
424
+ created: Date.now(),
425
+ model: "",
426
+ object: "chat.completion",
427
+ };
428
+ const lastResult = results.at(-1);
429
+ if (!lastResult) return response;
430
+ let toolCalls: ChatCompletion.Choice["message"]["tool_calls"] = undefined;
431
+ for (const result of results) {
432
+ const delta = result.choices[0].delta;
433
+
434
+ if (delta.content) {
435
+ content = `${content || ""}${delta.content || ""}`;
436
+ }
437
+ if (delta.function_call) {
438
+ functionCall = {
439
+ name: `${functionCall ? functionCall.name : ""}${
440
+ delta.function_call.name || ""
441
+ }`,
442
+ arguments: `${functionCall ? functionCall.arguments : ""}${
443
+ delta.function_call.arguments || ""
444
+ }`,
445
+ };
446
+ }
447
+ const toolCall = delta.tool_calls?.[0];
448
+ if (toolCall) {
449
+ toolCalls = toolCalls || [];
450
+ const lastToolCall = toolCalls.at(-1);
451
+ if (!lastToolCall || toolCall.id) {
452
+ toolCalls.push({
453
+ id: toolCall.id || "",
454
+ type: toolCall.type || "function",
455
+ function: {
456
+ name: toolCall.function?.name || "",
457
+ arguments: toolCall.function?.arguments || "",
458
+ },
459
+ });
460
+ continue;
461
+ }
462
+ lastToolCall.function.name = `${lastToolCall.function.name}${
463
+ toolCall.function?.name || ""
464
+ }`;
465
+ lastToolCall.function.arguments = `${lastToolCall.function.arguments}${
466
+ toolCall.function?.arguments || ""
467
+ }`;
468
+ }
469
+ }
470
+ response.choices.push({
471
+ finish_reason: lastResult.choices[0].finish_reason || "stop",
472
+ index: lastResult.choices[0].index || 0,
473
+ logprobs: lastResult.choices[0].logprobs || null,
474
+ message: {
475
+ role: "assistant",
476
+ content,
477
+ function_call: functionCall ? functionCall : undefined,
478
+ tool_calls: toolCalls ? toolCalls : undefined,
479
+ },
480
+ });
481
+ response.id = lastResult.id;
482
+ response.model = lastResult.model;
483
+ response.created = lastResult.created;
484
+ response.system_fingerprint = lastResult.system_fingerprint;
485
+ return response;
486
+ };
487
+
383
488
  const cleaned_result = (results: any[]) => {
384
489
  if ("completion" in results[0]) {
385
490
  return results.reduce(
@@ -401,69 +506,13 @@ const cleaned_result = (results: any[]) => {
401
506
  return final_result;
402
507
  }
403
508
 
404
- // Response was streamed
405
509
  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
-
412
- for (const result of results) {
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}`;
441
- }
442
- }
443
-
444
- if (has_function_call) {
445
- response['function_call'] = {
446
- 'name': function_name,
447
- 'arguments': function_arguments,
448
- }
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
-
463
- const final_result = structuredClone(results.at(-1));
464
- final_result.choices[0] = response;
465
-
466
- return final_result;
510
+ const response = mapChatCompletionChunk(results);
511
+ response.choices[0] = {
512
+ ...response.choices[0],
513
+ ...response.choices[0].message,
514
+ };
515
+ return response;
467
516
  }
468
517
 
469
518
  return "";
@@ -503,6 +552,7 @@ const throwOnBadResponse = (request_response: any, main_message: string) => {
503
552
  };
504
553
 
505
554
  export {
555
+ getAllPromptTemplates,
506
556
  getApiKey,
507
557
  getPromptTemplate,
508
558
  promptLayerAllPromptTemplates,