1
- import { assertGreater , assertLessOrEqual } from "jsr:@std/assert" ;
1
+ import {
2
+ assertEquals ,
3
+ assertExists ,
4
+ assertGreater ,
5
+ assertIsError ,
6
+ assertLessOrEqual ,
7
+ assertStringIncludes ,
8
+ assertThrows ,
9
+ } from 'jsr:@std/assert' ;
2
10
3
- const session = new Supabase . ai . Session ( "gte-small" ) ;
11
+ const session = new Supabase . ai . Session ( 'gte-small' ) ;
12
+
13
+ assertThrows ( ( ) => {
14
+ const _ = new Supabase . ai . Session ( 'gte-small_wrong_name' ) ;
15
+ } , "invalid 'Session' type" ) ;
4
16
5
17
function dotProduct ( a : number [ ] , b : number [ ] ) {
6
18
let result = 0 ;
@@ -15,27 +27,55 @@ export default {
15
27
async fetch ( ) {
16
28
// Generate embedding
17
29
// @ts -ignore unkwnow type
18
- const meow : number [ ] = await session . run ( "meow" , {
19
- mean_pool : true ,
20
- normalize : true ,
21
- } ) ;
30
+ const [ meow , meowError ] = await session . run ( 'meow' ) as [
31
+ number [ ] ,
32
+ undefined ,
33
+ ] ;
34
+ console . log ( 'cat' , meow , meowError ) ;
22
35
23
36
// @ts -ignore unkwnow type
24
- const love : number [ ] = await session . run ( " I love cats" , {
37
+ const [ love , loveError ] = await session . run ( ' I love cats' , {
25
38
mean_pool : true ,
26
39
normalize : true ,
27
- } ) ;
40
+ } ) as [ number [ ] , undefined ] ;
41
+
42
+ // "Valid input should result in ok value"
43
+ {
44
+ assertExists ( meow ) ;
45
+ assertExists ( love ) ;
46
+
47
+ assertEquals ( meowError , undefined ) ;
48
+ assertEquals ( loveError , undefined ) ;
49
+ }
50
+
51
+ // "Invalid input should result in error value"
52
+ {
53
+ const [ notCat , notCatError ] = await session . run ( {
54
+ bad_input : { 'not a cat' : 'let fail' } ,
55
+ } ) as [ undefined , { message : string ; inner : Error } ] ;
56
+
57
+ assertEquals ( notCat , undefined ) ;
58
+
59
+ assertExists ( notCatError ) ;
60
+ assertIsError ( notCatError . inner ) ;
61
+ assertStringIncludes (
62
+ notCatError . message ,
63
+ 'must provide a valid prompt value' ,
64
+ ) ;
65
+ }
28
66
29
- // Ensures `mean_pool` and `normalize`
30
- const sameScore = dotProduct ( meow , meow ) ;
31
- const diffScore = dotProduct ( meow , love ) ;
67
+ // "Ensures `mean_pool` and `normalize`"
68
+ {
69
+ const sameScore = dotProduct ( meow , meow ) ;
70
+ const diffScore = dotProduct ( meow , love ) ;
32
71
33
- assertGreater ( sameScore , 0.9 ) ;
34
- assertGreater ( diffScore , 0.5 ) ;
35
- assertGreater ( sameScore , diffScore ) ;
72
+ assertGreater ( sameScore , 0.9 ) ;
73
+ assertGreater ( diffScore , 0.5 ) ;
74
+ assertGreater ( sameScore , diffScore ) ;
36
75
37
- assertLessOrEqual ( sameScore , 1 ) ;
38
- assertLessOrEqual ( diffScore , 1 ) ;
76
+ assertLessOrEqual ( sameScore , 1 ) ;
77
+ assertLessOrEqual ( diffScore , 1 ) ;
78
+ }
39
79
40
80
return new Response (
41
81
null ,
0 commit comments