opik-openai 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var opik=require('opik');var
|
|
1
|
+
'use strict';var opik=require('opik');var k=(e,t="",n={})=>{for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o)){let r=t?`${t}.${o}`:o;typeof e[o]=="object"&&e[o]!==null&&!Array.isArray(e[o])?k(e[o],r,n):n[r]=e[o];}return n};var I=e=>({model:e.model,input:K(e),modelParameters:B(e)}),B=e=>["frequency_penalty","logit_bias","logprobs","max_tokens","n","presence_penalty","seed","stop","stream","temperature","top_p","user","response_format","top_logprobs"].reduce((n,o)=>e[o]!==void 0?{...n,[o]:e[o]}:n,{}),K=e=>S(e)?$(e):"prompt"in e?{prompt:e.prompt}:"input"in e?q(e.input):{},S=e=>!!(e&&typeof e=="object"&&!Array.isArray(e)&&"messages"in e),$=e=>["messages","function_call","functions","tools","tool_choice"].reduce((n,o)=>o in e?{...n,[o]:e[o]}:n,{}),q=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{input:e},O=e=>{if(V(e))return {content:e.output_text};if(H(e)){let t=e.output,n=L(t);return n===null?void 0:Array.isArray(n)?{outputs:n}:n}if(z(e)){let t=J(e);return typeof t=="string"?{content:t}:t}if(Q(e))return W(e)},V=e=>e instanceof Object&&"output_text"in e&&typeof e.output_text=="string"&&e.output_text!=="",H=e=>!!(typeof e=="object"&&e!==null&&"output"in e&&Array.isArray(e.output)),L=e=>e.length>1?e:e.length===1&&typeof e[0]=="object"&&e[0]!==null?e[0]:e.length===1?{content:e[0]}:null,z=e=>!!(e instanceof Object&&"choices"in e&&Array.isArray(e.choices)&&e.choices.length>0),J=e=>{let t=e.choices[0];return "message"in t&&typeof t.message=="object"&&t.message!==null?t.message:"text"in t&&t.text?String(t.text):""},Q=e=>{if(!e||typeof e!="object"||!("data"in e)||!Array.isArray(e.data))return false;let t=e.data;if(t.length===0)return false;let n=t[0];return typeof n=="object"&&n!==null&&"embedding"in n&&Array.isArray(n.embedding)},x=5,W=e=>({embeddings:e.data.map(n=>{let o=n.embedding;return {embedding:o.length>x?[...o.slice(0,x),"..."]:o,index:n.index,dimensions:o.length}})}),h=e=>{if(X(e))return {completion_tokens:e.usage.completion_tokens,prompt_tokens:e.usage.prompt_tokens,total_tokens:e.usage.total_tokens,...k(e.usage,"original_usage")};if(Y(e))return {completion_tokens:e.usage.input_tokens,prompt_tokens:e.usage.output_tokens,total_tokens:e.usage.total_tokens,...k(e.usage,"original_usage")};if(Z(e))return {completion_tokens:0,prompt_tokens:e.usage.prompt_tokens,total_tokens:e.usage.total_tokens,...k(e.usage,"original_usage")}},X=e=>{if(!e||typeof e!="object"||!("usage"in e)||!e.usage||typeof e.usage!="object")return false;let t=e.usage;return typeof t.prompt_tokens=="number"&&typeof t.completion_tokens=="number"&&typeof t.total_tokens=="number"},Y=e=>{if(!e||typeof e!="object"||!("usage"in e)||!e.usage||typeof e.usage!="object")return false;let t=e.usage;return typeof t.total_tokens=="number"&&typeof t.input_tokens=="number"&&typeof t.output_tokens=="number"},Z=e=>{if(!e||typeof e!="object"||!("usage"in e)||!e.usage||typeof e.usage!="object")return false;let t=e.usage;return typeof t.prompt_tokens=="number"&&typeof t.total_tokens=="number"&&!("completion_tokens"in t)},P=e=>{var o,r;let t=e,n=(o=t==null?void 0:t.choices)==null?void 0:o[0];try{if(ee(n))return {isToolCall:!0,data:n.delta.tool_calls[0]};if(te(n))return {isToolCall:!1,data:((r=n.delta)==null?void 0:r.content)||""};if(ne(n))return {isToolCall:!1,data:n.text||""}}catch(a){opik.logger.debug(`Error parsing chunk: ${a}`);}return {isToolCall:false,data:""}},ee=e=>!!(e&&typeof e=="object"&&"delta"in e&&e.delta&&typeof e.delta=="object"&&"tool_calls"in e.delta&&Array.isArray(e.delta.tool_calls)&&e.delta.tool_calls.length>0),te=e=>!!(e&&typeof e=="object"&&"delta"in e),ne=e=>!!(e&&typeof e=="object"&&"text"in e),D=e=>{let{name:t,arguments:n}=e.reduce((o,r)=>{var a,i;return {name:((a=r.function)==null?void 0:a.name)||o.name,arguments:o.arguments+(((i=r.function)==null?void 0:i.arguments)||"")}},{name:"",arguments:""});return {tool_calls:[{function:{name:t,arguments:n}}]}},T=e=>{if(typeof e!="object"||e===null)return {model:void 0,modelParameters:void 0,metadata:void 0};let t=oe(e)?e.model:void 0,n=ae(e),o=re(e);return {model:t,modelParameters:Object.keys(n).length>0?n:void 0,metadata:Object.keys(o).length>0?o:void 0}},oe=e=>"model"in e&&typeof e.model=="string",ae=e=>j(e,["max_output_tokens","parallel_tool_calls","store","temperature","tool_choice","top_p","truncation","user"]),re=e=>j(e,["reasoning","incomplete_details","instructions","previous_response_id","tools","metadata","status","error"]),j=(e,t)=>{let n={};for(let o of t)o in e&&e[o]!=null&&(n[o]=e[o]);return n};var R=e=>e!=null&&typeof e=="object"&&typeof e[Symbol.asyncIterator]=="function";var U=(e,t,n)=>{var o;t.span({...n,endTime:new Date,type:opik.OpikSpanType.General,errorInfo:{message:e.message,exceptionType:e.name,traceback:(o=e.stack)!=null?o:""}}),t.end();},E=(e,t)=>(...n)=>se(e,t,...n),se=(e,t,...n)=>{var y;let{tags:o=[],...r}=(y=t==null?void 0:t.traceMetadata)!=null?y:{},{model:a,input:i,modelParameters:u}=I(n[0]),m={...r,...u,model:a},s={model:a,input:i,provider:"openai",name:t.generationName,tags:o,startTime:new Date,metadata:m},l,d=!!(t!=null&&t.parent);t!=null&&t.parent?l=t.parent:l=t.client.trace(s);try{let p=e(...n);return R(p)?M(p,l,d,s):p instanceof Promise?p.then(c=>{if(R(c))return M(c,l,d,s);let g=O(c),b=h(c),{model:A,metadata:F}=T(c),N={...s.metadata,...F,usage:b,model:A||s.model};return l.span({...s,output:g,endTime:new Date,usage:b,model:A||s.model,type:opik.OpikSpanType.General,metadata:N}),d||l.update({output:g,endTime:new Date}),c}).catch(c=>{throw U(c,l,s),c}):p}catch(p){throw U(p,l,s),p}},ie=(e,t)=>{let n,o,r={...t};if(typeof e=="object"&&e&&"response"in e){let i=e.response;n=O(i);let{model:u,modelParameters:m,metadata:s}=T(i);r.model=u!=null?u:t.model,r.metadata={...t.metadata,...m,...s},typeof i=="object"&&i&&"usage"in i&&(o=i.usage);}typeof e=="object"&&e!=null&&"usage"in e&&(o=e.usage);let a=P(e);return {output:n,usage:o,chunkData:a,updatedObservationData:r}};function M(e,t,n,o){async function*r(){let a=[],i=[],m,s=null,l={...o};for await(let p of e){let{output:w,usage:c,chunkData:g,updatedObservationData:b}=ie(p,l);w&&(s=w),c&&(m=c),l=b,g.isToolCall?i=[...i,g.data]:a=[...a,g.data],yield p;}let d=s!=null?s:i.length>0?D(i):{message:a.join("")},y=h({usage:m});t.span({...l,output:d,endTime:new Date,type:opik.OpikSpanType.General,usage:y}),n||t.update({output:d,endTime:new Date});}return r()}var f=class f{static getInstance(t){return f.instance||(f.instance=new opik.Opik(t)),f.instance}};f.instance=null;var C=f;var v=(e,t)=>new Proxy(e,{get(n,o,r){var s,l,d;let a=n[o],i=(l=t==null?void 0:t.generationName)!=null?l:`${((s=e.constructor)==null?void 0:s.name)||"OpenAI"}.${o.toString()}`,u={...t,generationName:i,client:(d=t==null?void 0:t.client)!=null?d:C.getInstance()};return o==="flush"?u.client.flush.bind(u.client):typeof a=="function"?E(a.bind(n),u):a&&!Array.isArray(a)&&!(a instanceof Date)&&typeof a=="object"?v(a,u):Reflect.get(n,o,r)}});exports.trackOpenAI=v;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {Opik,OpikSpanType,logger}from'opik';var
|
|
1
|
+
import {Opik,OpikSpanType,logger}from'opik';var k=(e,t="",n={})=>{for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o)){let r=t?`${t}.${o}`:o;typeof e[o]=="object"&&e[o]!==null&&!Array.isArray(e[o])?k(e[o],r,n):n[r]=e[o];}return n};var I=e=>({model:e.model,input:K(e),modelParameters:B(e)}),B=e=>["frequency_penalty","logit_bias","logprobs","max_tokens","n","presence_penalty","seed","stop","stream","temperature","top_p","user","response_format","top_logprobs"].reduce((n,o)=>e[o]!==void 0?{...n,[o]:e[o]}:n,{}),K=e=>S(e)?$(e):"prompt"in e?{prompt:e.prompt}:"input"in e?q(e.input):{},S=e=>!!(e&&typeof e=="object"&&!Array.isArray(e)&&"messages"in e),$=e=>["messages","function_call","functions","tools","tool_choice"].reduce((n,o)=>o in e?{...n,[o]:e[o]}:n,{}),q=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{input:e},O=e=>{if(V(e))return {content:e.output_text};if(H(e)){let t=e.output,n=L(t);return n===null?void 0:Array.isArray(n)?{outputs:n}:n}if(z(e)){let t=J(e);return typeof t=="string"?{content:t}:t}if(Q(e))return W(e)},V=e=>e instanceof Object&&"output_text"in e&&typeof e.output_text=="string"&&e.output_text!=="",H=e=>!!(typeof e=="object"&&e!==null&&"output"in e&&Array.isArray(e.output)),L=e=>e.length>1?e:e.length===1&&typeof e[0]=="object"&&e[0]!==null?e[0]:e.length===1?{content:e[0]}:null,z=e=>!!(e instanceof Object&&"choices"in e&&Array.isArray(e.choices)&&e.choices.length>0),J=e=>{let t=e.choices[0];return "message"in t&&typeof t.message=="object"&&t.message!==null?t.message:"text"in t&&t.text?String(t.text):""},Q=e=>{if(!e||typeof e!="object"||!("data"in e)||!Array.isArray(e.data))return false;let t=e.data;if(t.length===0)return false;let n=t[0];return typeof n=="object"&&n!==null&&"embedding"in n&&Array.isArray(n.embedding)},x=5,W=e=>({embeddings:e.data.map(n=>{let o=n.embedding;return {embedding:o.length>x?[...o.slice(0,x),"..."]:o,index:n.index,dimensions:o.length}})}),h=e=>{if(X(e))return {completion_tokens:e.usage.completion_tokens,prompt_tokens:e.usage.prompt_tokens,total_tokens:e.usage.total_tokens,...k(e.usage,"original_usage")};if(Y(e))return {completion_tokens:e.usage.input_tokens,prompt_tokens:e.usage.output_tokens,total_tokens:e.usage.total_tokens,...k(e.usage,"original_usage")};if(Z(e))return {completion_tokens:0,prompt_tokens:e.usage.prompt_tokens,total_tokens:e.usage.total_tokens,...k(e.usage,"original_usage")}},X=e=>{if(!e||typeof e!="object"||!("usage"in e)||!e.usage||typeof e.usage!="object")return false;let t=e.usage;return typeof t.prompt_tokens=="number"&&typeof t.completion_tokens=="number"&&typeof t.total_tokens=="number"},Y=e=>{if(!e||typeof e!="object"||!("usage"in e)||!e.usage||typeof e.usage!="object")return false;let t=e.usage;return typeof t.total_tokens=="number"&&typeof t.input_tokens=="number"&&typeof t.output_tokens=="number"},Z=e=>{if(!e||typeof e!="object"||!("usage"in e)||!e.usage||typeof e.usage!="object")return false;let t=e.usage;return typeof t.prompt_tokens=="number"&&typeof t.total_tokens=="number"&&!("completion_tokens"in t)},P=e=>{var o,r;let t=e,n=(o=t==null?void 0:t.choices)==null?void 0:o[0];try{if(ee(n))return {isToolCall:!0,data:n.delta.tool_calls[0]};if(te(n))return {isToolCall:!1,data:((r=n.delta)==null?void 0:r.content)||""};if(ne(n))return {isToolCall:!1,data:n.text||""}}catch(a){logger.debug(`Error parsing chunk: ${a}`);}return {isToolCall:false,data:""}},ee=e=>!!(e&&typeof e=="object"&&"delta"in e&&e.delta&&typeof e.delta=="object"&&"tool_calls"in e.delta&&Array.isArray(e.delta.tool_calls)&&e.delta.tool_calls.length>0),te=e=>!!(e&&typeof e=="object"&&"delta"in e),ne=e=>!!(e&&typeof e=="object"&&"text"in e),D=e=>{let{name:t,arguments:n}=e.reduce((o,r)=>{var a,i;return {name:((a=r.function)==null?void 0:a.name)||o.name,arguments:o.arguments+(((i=r.function)==null?void 0:i.arguments)||"")}},{name:"",arguments:""});return {tool_calls:[{function:{name:t,arguments:n}}]}},T=e=>{if(typeof e!="object"||e===null)return {model:void 0,modelParameters:void 0,metadata:void 0};let t=oe(e)?e.model:void 0,n=ae(e),o=re(e);return {model:t,modelParameters:Object.keys(n).length>0?n:void 0,metadata:Object.keys(o).length>0?o:void 0}},oe=e=>"model"in e&&typeof e.model=="string",ae=e=>j(e,["max_output_tokens","parallel_tool_calls","store","temperature","tool_choice","top_p","truncation","user"]),re=e=>j(e,["reasoning","incomplete_details","instructions","previous_response_id","tools","metadata","status","error"]),j=(e,t)=>{let n={};for(let o of t)o in e&&e[o]!=null&&(n[o]=e[o]);return n};var R=e=>e!=null&&typeof e=="object"&&typeof e[Symbol.asyncIterator]=="function";var U=(e,t,n)=>{var o;t.span({...n,endTime:new Date,type:OpikSpanType.General,errorInfo:{message:e.message,exceptionType:e.name,traceback:(o=e.stack)!=null?o:""}}),t.end();},E=(e,t)=>(...n)=>se(e,t,...n),se=(e,t,...n)=>{var y;let{tags:o=[],...r}=(y=t==null?void 0:t.traceMetadata)!=null?y:{},{model:a,input:i,modelParameters:u}=I(n[0]),m={...r,...u,model:a},s={model:a,input:i,provider:"openai",name:t.generationName,tags:o,startTime:new Date,metadata:m},l,d=!!(t!=null&&t.parent);t!=null&&t.parent?l=t.parent:l=t.client.trace(s);try{let p=e(...n);return R(p)?M(p,l,d,s):p instanceof Promise?p.then(c=>{if(R(c))return M(c,l,d,s);let g=O(c),b=h(c),{model:A,metadata:F}=T(c),N={...s.metadata,...F,usage:b,model:A||s.model};return l.span({...s,output:g,endTime:new Date,usage:b,model:A||s.model,type:OpikSpanType.General,metadata:N}),d||l.update({output:g,endTime:new Date}),c}).catch(c=>{throw U(c,l,s),c}):p}catch(p){throw U(p,l,s),p}},ie=(e,t)=>{let n,o,r={...t};if(typeof e=="object"&&e&&"response"in e){let i=e.response;n=O(i);let{model:u,modelParameters:m,metadata:s}=T(i);r.model=u!=null?u:t.model,r.metadata={...t.metadata,...m,...s},typeof i=="object"&&i&&"usage"in i&&(o=i.usage);}typeof e=="object"&&e!=null&&"usage"in e&&(o=e.usage);let a=P(e);return {output:n,usage:o,chunkData:a,updatedObservationData:r}};function M(e,t,n,o){async function*r(){let a=[],i=[],m,s=null,l={...o};for await(let p of e){let{output:w,usage:c,chunkData:g,updatedObservationData:b}=ie(p,l);w&&(s=w),c&&(m=c),l=b,g.isToolCall?i=[...i,g.data]:a=[...a,g.data],yield p;}let d=s!=null?s:i.length>0?D(i):{message:a.join("")},y=h({usage:m});t.span({...l,output:d,endTime:new Date,type:OpikSpanType.General,usage:y}),n||t.update({output:d,endTime:new Date});}return r()}var f=class f{static getInstance(t){return f.instance||(f.instance=new Opik(t)),f.instance}};f.instance=null;var C=f;var v=(e,t)=>new Proxy(e,{get(n,o,r){var s,l,d;let a=n[o],i=(l=t==null?void 0:t.generationName)!=null?l:`${((s=e.constructor)==null?void 0:s.name)||"OpenAI"}.${o.toString()}`,u={...t,generationName:i,client:(d=t==null?void 0:t.client)!=null?d:C.getInstance()};return o==="flush"?u.client.flush.bind(u.client):typeof a=="function"?E(a.bind(n),u):a&&!Array.isArray(a)&&!(a instanceof Date)&&typeof a=="object"?v(a,u):Reflect.get(n,o,r)}});export{v as trackOpenAI};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opik-openai",
|
|
3
3
|
"description": "Opik TypeScript and JavaScript SDK integration with OpenAI",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18"
|
|
7
7
|
},
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"lint": "eslint '**/*.{ts,tsx}'",
|
|
51
51
|
"typecheck": "tsc --noEmit",
|
|
52
52
|
"format": "prettier --write 'src/**/*.{ts,tsx,js,jsx,json,md}'",
|
|
53
|
-
"test": "vitest"
|
|
53
|
+
"test": "vitest run"
|
|
54
54
|
},
|
|
55
55
|
"files": [
|
|
56
56
|
"dist/**/*",
|