WEBVTT

1
00:00:06.280 --> 00:00:10.039
Hey, welcome back to another episode
of JavaScript Jabber. This week, on

2
00:00:10.080 --> 00:00:15.480
our panel, we have Dan Shapire, Hey from a nice, nice weather

3
00:00:15.519 --> 00:00:21.079
in television. I'm Charles max Wood
from Top End Devs. It actually snowed

4
00:00:21.120 --> 00:00:25.000
here over the weekend, so we
finally have a few inches of snow outside

5
00:00:25.839 --> 00:00:31.079
just here. No, we're wearing
a T shirt. Yeah, well we

6
00:00:31.280 --> 00:00:35.920
go skiing. But yeah, anyway, we have a special guest this week.

7
00:00:36.000 --> 00:00:40.640
It's He's May. I didn't get
your last name on here, but

8
00:00:41.799 --> 00:00:45.320
oh here we go. Oh that's
a hard one. You're gonna have a

9
00:00:45.359 --> 00:00:48.520
hard time with. Well, us
say, ed, that is perfect.

10
00:00:48.679 --> 00:00:54.640
That is perfect. So he's May. Do you want to introduce yourself real

11
00:00:54.679 --> 00:00:58.039
quick? Let people know who you
are and why we're excited to have you

12
00:00:58.079 --> 00:01:02.719
here. Sure? Sure, So, as Charles said, my name is

13
00:01:02.719 --> 00:01:07.680
Ismael. I am the co founder
of an open source framework called Superagent.

14
00:01:08.599 --> 00:01:15.000
Superagent is a framework which allows any
developer, regardless of their skill set,

15
00:01:15.319 --> 00:01:25.719
to create and integrate AI assistance into
whatever type of application, stack or environment

16
00:01:25.959 --> 00:01:30.760
that they are using to build their
apps. So, as you guys know,

17
00:01:30.959 --> 00:01:37.239
AI can be pretty complex and there
aren't that many machine learning engineers out

18
00:01:37.280 --> 00:01:44.959
there there are actually very few,
and Superagent allows any developer to basically become

19
00:01:45.519 --> 00:01:49.840
a machine learning engineer and leverage all
of the fantastic technology that's being developed every

20
00:01:49.920 --> 00:01:57.519
day without having to actually know that
much. So we abstract the way all

21
00:01:57.560 --> 00:02:02.760
of the tiny machine learning pieces that
need to fit together in order to create

22
00:02:02.840 --> 00:02:09.000
a accurate, production ready application,
so that the developers can, you know,

23
00:02:09.080 --> 00:02:16.039
focus on their users, focus on
creating amazing user experiences, and you

24
00:02:16.080 --> 00:02:23.000
know, tap into the vast possibilities
of AI. That's so cool. And

25
00:02:23.479 --> 00:02:28.000
I have to say that a few
years ago we started a show on machine

26
00:02:28.039 --> 00:02:31.400
learning called Adventures in Machine Learning,
which is much more on the engineering side

27
00:02:31.400 --> 00:02:36.599
of building models and stuff like that, and I thought, oh, this

28
00:02:36.680 --> 00:02:38.680
is stuff that I really want to
pick up. But I figured out that

29
00:02:38.759 --> 00:02:45.039
I am much more interested in building
things with the engines that other people built.

30
00:02:46.080 --> 00:02:47.960
There. I am in, oh, I've got to wrangle this data

31
00:02:49.000 --> 00:02:52.439
too and somehow make it jive with
this other data so that I can get

32
00:02:52.479 --> 00:02:57.560
a model that gives me the answer
I want. So anyway, this is

33
00:02:57.599 --> 00:03:00.000
cool stuff, and this is something
I wanted to talk about for a while.

34
00:03:00.080 --> 00:03:05.000
Cool I mean, and I see
that I came from Originally, I

35
00:03:05.080 --> 00:03:07.879
came from an open source background,
so I've been a contributor to many of

36
00:03:08.199 --> 00:03:13.560
you know, the machine learning frameworks
out there that people use. And one

37
00:03:13.599 --> 00:03:16.199
of the things that frustrated frustrated me
a lot was that, you know,

38
00:03:16.280 --> 00:03:23.599
regular developers were having a really hard
time using these frameworks because it required so

39
00:03:23.759 --> 00:03:29.520
much you know, knowledge of you
know, deploying this stuff and running it

40
00:03:29.599 --> 00:03:32.639
in production, and how to get
it accurate, how to get the responses

41
00:03:32.680 --> 00:03:38.400
you want, how to attach you
know, data to your AI model,

42
00:03:38.599 --> 00:03:45.520
how to have that model interact with
you know, third party ABIs, everything

43
00:03:45.599 --> 00:03:49.719
like that. It was just a
mess. So I just decided one day,

44
00:03:49.759 --> 00:03:53.360
I think it was in May,
and my co founder was in Vegas

45
00:03:53.439 --> 00:03:55.840
playing poker and I had a week
off, and I just said, fuck

46
00:03:55.919 --> 00:04:00.599
it, man, let's sit down
and do this. And so I took

47
00:04:00.639 --> 00:04:04.080
a week and I just coded everything, like the first version in a week.

48
00:04:04.280 --> 00:04:08.439
And when it was ready, I
was like, this is this this

49
00:04:08.879 --> 00:04:12.960
this feels good. You know,
perhaps other people would want to use this.

50
00:04:13.120 --> 00:04:17.120
So I just decided to slap an
MIT license on top of that and

51
00:04:17.319 --> 00:04:23.600
open sources. And you know,
the feedback I got was amazing, and

52
00:04:23.920 --> 00:04:29.439
it just blew up and now we
are taking it basically to the next level.

53
00:04:29.519 --> 00:04:33.399
So that's how it started. That
was I wasn't it wasn't meant to

54
00:04:33.439 --> 00:04:38.920
be, but it was meant to
be, so to speak. I love

55
00:04:38.959 --> 00:04:46.560
those weekend projects, so the best
things in life, you know. I'm

56
00:04:46.600 --> 00:04:51.079
trying to decide if we should start
with the chatbot side or the AI engine

57
00:04:51.519 --> 00:04:58.199
LM or whatever side. I think
the best thing to start with actually would

58
00:04:58.360 --> 00:05:01.160
First of all, I think it's
worth while mentioning that before, before we

59
00:05:01.199 --> 00:05:05.959
started recording, you had a bit
of interesting news to tell us how about

60
00:05:06.000 --> 00:05:11.680
the project, and I think it's
worthwhile to highlight that up front. Yeah,

61
00:05:11.759 --> 00:05:15.519
let's do that. So I'm happy
to announce, you know that Superagent

62
00:05:15.639 --> 00:05:20.759
will be a part of the Y
Combinator Winter twenty four batch, which is

63
00:05:20.800 --> 00:05:28.399
like an amazing thing, one could
say a dream come true. I think

64
00:05:28.399 --> 00:05:32.800
it was like twenty four thousand applicants
or something, and you know, we

65
00:05:32.800 --> 00:05:38.120
were chosen as one of I don't
know how many, but not that many.

66
00:05:38.839 --> 00:05:44.240
So it's an amazing thing. And
I'm situated in Sweden. I've lived

67
00:05:44.240 --> 00:05:48.240
here almost all my life and it's
a lot of snow here as well as

68
00:05:48.279 --> 00:05:54.199
you might imagine. And I will
be relocating to the States and San Francisco

69
00:05:54.360 --> 00:05:58.600
on Thursday. So I'm packing.
I'm packing, and I just found out

70
00:05:58.639 --> 00:06:01.160
that my passport is going to expire
in two months, so I have to

71
00:06:01.199 --> 00:06:05.399
fix that as well prior to But
but but that's that's on my side.

72
00:06:06.680 --> 00:06:11.680
Uh So, really excited about that, and really excited. You know.

73
00:06:11.759 --> 00:06:16.040
One of the great things with y
Combinator is that you can focus a lot

74
00:06:16.160 --> 00:06:23.360
on building something that's actually viable and
can become something big and viable in the

75
00:06:23.439 --> 00:06:28.519
future. And I'm really excited about
that. You know, sitting here all

76
00:06:28.600 --> 00:06:33.079
the way, you know, across
the Atlantic basically and only chatting with people

77
00:06:33.160 --> 00:06:40.560
on our discord channel or having like
the zoom calls is great. But you

78
00:06:40.600 --> 00:06:44.839
know, I think that being where, you know, in the mosh pit

79
00:06:45.000 --> 00:06:50.160
of AI in person would be even
more great. And I could you know,

80
00:06:50.319 --> 00:06:57.319
achieve more and have better you know, talk to people who do this

81
00:06:57.399 --> 00:07:00.560
stuff all of the day, and
all of the all of the devilopers and

82
00:07:00.680 --> 00:07:05.879
machine learning engineers and stuff that are
working on this and and and basically you

83
00:07:05.920 --> 00:07:10.360
know, building the future. That
would be that That's my dream, you

84
00:07:10.360 --> 00:07:15.040
know, to talk to those guys
and learn and adapt and try to incorporate

85
00:07:15.120 --> 00:07:21.040
whatever works into our framework. So
oh yeah, so obviously congratulations and kind

86
00:07:21.120 --> 00:07:27.439
those Uh And I wanted to add
that one of the great things about being

87
00:07:27.519 --> 00:07:31.000
part of something like by Combinator is
that it's definitely not as smart, it's

88
00:07:31.000 --> 00:07:34.879
not that money. It's as smart
as you can get in that regard.

89
00:07:35.000 --> 00:07:40.439
So it opens a whole lot of
doors. And and it's it's not just

90
00:07:40.480 --> 00:07:45.480
getting you know, the funding,
it's also being part of the program,

91
00:07:44.959 --> 00:07:50.120
uh, you know, really pushing
your your project forward in terms of recognition

92
00:07:50.199 --> 00:07:55.920
and adoption and stuff like that.
So I'm really excited for you guys.

93
00:07:55.920 --> 00:08:00.759
And as I said, kudos.
And the second and the second thing that

94
00:08:00.800 --> 00:08:05.720
I wanted that I think it's a
good starting point is to kind of to

95
00:08:05.879 --> 00:08:15.720
understand what what super agent might be
used. Four. So if you can

96
00:08:15.759 --> 00:08:22.079
give a concrete example of one or
two or maybe even three things that you

97
00:08:22.120 --> 00:08:28.079
know that super Agent makes easy to
do that would otherwise be you know,

98
00:08:28.240 --> 00:08:33.480
much more challenging. Yeah, sure, I'll give you two examples. I'll

99
00:08:33.519 --> 00:08:39.120
give you a personal example and then
I'll give you like an enterprise example as

100
00:08:39.159 --> 00:08:46.399
well. So personally, I use
Superagent every day. And as you as

101
00:08:46.480 --> 00:08:52.559
any like open source maintainer will tell
you, the community is everything. When

102
00:08:52.600 --> 00:08:56.919
you're building an open source project,
the community is everything. And that's that's

103
00:08:58.000 --> 00:09:01.480
one of the main reasons why you
open. So you want feedback, you

104
00:09:01.559 --> 00:09:05.159
want contributions, you want a bunch
of stuff from the target audience that you're

105
00:09:05.159 --> 00:09:11.039
trying to, you know, build
a product or a framework or whatever it

106
00:09:11.120 --> 00:09:16.080
is for. And so when you
come to when you get to a certain

107
00:09:16.159 --> 00:09:22.399
stage and when you have a critical
amount of contributions being made, it's like

108
00:09:22.519 --> 00:09:26.559
having fifty employees. It takes a
lot of time to go through contributions,

109
00:09:26.559 --> 00:09:33.159
to talk to users to see what
developers want, how we should build whatever

110
00:09:33.200 --> 00:09:37.559
they want, and what ideas they
have, and what code they've written,

111
00:09:37.120 --> 00:09:41.480
and so all of that is really
time consuming. And one of the most

112
00:09:41.519 --> 00:09:48.080
time consuming things is doing code reviews, so reviewing other people's code that are

113
00:09:48.120 --> 00:09:52.159
not actually a part of your team, they're just open source contributors. And

114
00:09:52.240 --> 00:09:58.320
so if I would estimate that takes
me around ten to fifteen hours a week

115
00:09:58.440 --> 00:10:03.440
to only do that to review other
people's code. So what I did was

116
00:10:03.480 --> 00:10:07.879
that I set up a assistant,
as we call it. An assistant is

117
00:10:07.960 --> 00:10:13.720
basically an agent or a language model
that it has a bunch of tools connected

118
00:10:13.759 --> 00:10:20.279
to it and can be trained on
different data. So I trained my assistant,

119
00:10:20.480 --> 00:10:24.360
which I call Shuri Can. It's
a Japanese name because Superagent has this

120
00:10:24.480 --> 00:10:28.759
Ninja thing and a Japanese aura around
it. Everything we do we call it,

121
00:10:28.960 --> 00:10:33.399
you know, Japanese names basically,
So Shuri Can. She's an assistant

122
00:10:33.399 --> 00:10:39.519
that I built using Superagent, and
her sole purpose is to do code reviews

123
00:10:39.559 --> 00:10:46.639
for contributions that we get from open
source you know people, and she does

124
00:10:46.720 --> 00:10:52.480
that so well that even the contributors
don't know that it's an assistant. It's

125
00:10:52.480 --> 00:10:58.279
an AI assistant. So it has
passed the touring test multiple times, I

126
00:10:58.320 --> 00:11:03.639
would say. And the way we
do that is that basically it's super simple.

127
00:11:03.159 --> 00:11:07.799
You take with a couple of clicks
in our UI or with code in

128
00:11:09.159 --> 00:11:13.919
our SDK, you can set up
an assistant and attach as many files or

129
00:11:13.039 --> 00:11:20.759
data sources that you want to that
assistant, and that assistant will learn all

130
00:11:20.799 --> 00:11:24.279
of that data and you can instruct
it to do specific tasks. So in

131
00:11:24.320 --> 00:11:28.480
this case, I've taught her everything
there is to know about our code base,

132
00:11:30.559 --> 00:11:33.200
and so when a contribution comes in, she knows exactly how our codebase

133
00:11:33.279 --> 00:11:37.159
is done. She knows how we
like to write code, she knows all

134
00:11:37.200 --> 00:11:39.759
of our rules, all of our
internals set up, and she can give

135
00:11:39.799 --> 00:11:45.679
feedback to contributors on what they could
do better or what they should change in

136
00:11:45.720 --> 00:11:50.759
their code review, and then the
developers do that and then I can go

137
00:11:50.799 --> 00:11:56.039
in and merge that in. That's
just one simple example of what you can

138
00:11:56.080 --> 00:12:01.200
build. So if you would generalize
that, that's like building a team member.

139
00:12:01.799 --> 00:12:07.200
So to answer your question down,
one of the most exciting use cases

140
00:12:07.240 --> 00:12:15.720
I see is to augment your team
and increase productivity of your team. That's

141
00:12:15.759 --> 00:12:20.759
one of the main I think,
you know, unique selling points that AI

142
00:12:20.960 --> 00:12:26.279
has, which which I believe will
be a huge thing in the future,

143
00:12:26.360 --> 00:12:33.200
even more prominent than it might be
today. So that's one yeah, yeah,

144
00:12:33.279 --> 00:12:35.799
So before we move to the other
one, a few questions about that.

145
00:12:35.879 --> 00:12:41.519
So first of all, what model
do you use for sure can so

146
00:12:41.720 --> 00:12:46.080
in the Shuriken case, we use
an open AI model, the GPT three

147
00:12:46.159 --> 00:12:54.159
point five model that is fine tuned
on our code base basically, so that's

148
00:12:54.360 --> 00:13:01.679
that's a proprietary model that we use
an open Ai proprietory model for that specifically,

149
00:13:01.720 --> 00:13:05.240
So the starting point was open Ai
three point five, and then you

150
00:13:05.399 --> 00:13:09.679
further trained it on your own codebase. That's correct, Yes, fine tuned

151
00:13:09.679 --> 00:13:16.000
it on our on our own codebase. And because this is definitely not my

152
00:13:16.120 --> 00:13:22.080
area of expertise, is there,
like I would imagine there's some sort of

153
00:13:22.120 --> 00:13:28.000
a lower limit about how you know, how small your code base could be

154
00:13:28.000 --> 00:13:33.840
before you would actually get some value
after training on that specific codebase. Now,

155
00:13:33.960 --> 00:13:39.679
so yes and no. Uh,
you know, generally I can say

156
00:13:39.720 --> 00:13:46.840
that the more the more data you
have doesn't necessarily amount to a better performing

157
00:13:46.919 --> 00:13:50.320
model. Uh, it's the quality
of the data that's important. So you

158
00:13:50.360 --> 00:13:56.799
can actually have quite small training data
sets, but if the quality is high,

159
00:13:56.360 --> 00:14:01.960
and the quality is of course depending
on what it is the assistant or

160
00:14:01.320 --> 00:14:07.240
language model is supposed to solve.
But depending on the task and depending on

161
00:14:07.279 --> 00:14:11.799
the data quality, you can actually
get away with just a couple of thousand

162
00:14:11.960 --> 00:14:18.240
you know, rows in a spreadsheet
to train your model to be very effective

163
00:14:18.360 --> 00:14:26.799
on a specific task. So I
would say quality is you know, a

164
00:14:26.759 --> 00:14:31.360
better thing to focus on when it
comes to data sets than quantity, and

165
00:14:31.399 --> 00:14:37.080
that has also been improven by open
source model developers that have you know,

166
00:14:37.159 --> 00:14:46.120
basically generated synthetic data, small synthetic
data sets that have a really high quality

167
00:14:46.240 --> 00:14:50.720
and have been able to train models
that are as equally good as GPT three

168
00:14:50.759 --> 00:14:58.879
point five with less data, less
compute, less money. So quality is

169
00:14:58.919 --> 00:15:01.960
super important when you do that,
and there are a bunch of you know,

170
00:15:03.120 --> 00:15:07.519
bunch of stuff that you need to
learn before you can train your model.

171
00:15:07.679 --> 00:15:09.720
Of course, how should the data, what should the data look like,

172
00:15:11.240 --> 00:15:13.720
what type of data for what type
of task, et cetera, et

173
00:15:13.720 --> 00:15:18.799
cetera. That's all of the questions
that regular developers ask themselves every day,

174
00:15:18.840 --> 00:15:22.960
but they don't have any you know, they don't have any prior experience working

175
00:15:24.000 --> 00:15:28.759
in this field. So that's also
one of the reasons why we decided to

176
00:15:28.799 --> 00:15:33.639
build a framework for the mainstream regular
developer and abstract a way all of all

177
00:15:33.639 --> 00:15:37.559
of this stuff that we are discussing
now, just abstract that away and make

178
00:15:37.600 --> 00:15:41.799
it as easy as uploading a file
like Okay, you want you want your

179
00:15:41.919 --> 00:15:48.399
assistant to be trained on ten PDFs, Cool, upload them and we'll do

180
00:15:48.480 --> 00:15:50.879
the training in the background. You
won't notice we'll send you an email when

181
00:15:50.879 --> 00:15:56.200
it's done and you can use your
assistant. That's it your case. So

182
00:15:56.240 --> 00:16:00.080
in your case, you kind of
pointed it at GitHub rep and that's how

183
00:16:00.120 --> 00:16:06.639
you trained it exactly to multiple repositories. We have multiple repositories, so pointing

184
00:16:06.720 --> 00:16:11.799
it to those multiple repositories, and
then we have a bunch of technology that

185
00:16:11.120 --> 00:16:18.759
you know, extracts the necessary data
chunks, it splits it and fine tunes

186
00:16:19.559 --> 00:16:27.639
a model for that specific use case. So one thing that I'm curious about

187
00:16:27.639 --> 00:16:34.039
with this is I see a lot
of people add what you're talking about,

188
00:16:34.039 --> 00:16:38.519
at least to me, sounds a
lot like continuous integration or you know,

189
00:16:38.600 --> 00:16:45.360
some of the steps that people put
their into their GitHub actions where it basically

190
00:16:45.399 --> 00:16:49.080
says, you know, all the
test pass you pass through the linter,

191
00:16:49.320 --> 00:16:52.440
and hey, you know your style
matches our style, or hey will you

192
00:16:52.519 --> 00:16:59.120
accept you know the automatic cleanups that
come out of the linter and stuff like

193
00:16:59.159 --> 00:17:02.320
that. So I'm a little curious
as to what sure it can gives you

194
00:17:02.440 --> 00:17:11.039
that that you don't get from you
know, just kind of a standard what

195
00:17:11.079 --> 00:17:15.359
do you call it? A standard
CI set up? Yeah, So CI

196
00:17:15.599 --> 00:17:21.480
usually looks at syntax, and you
know code conventions like Lindin. You know,

197
00:17:21.559 --> 00:17:26.119
it's it's basically a code convention.
You might write sloppy code, but

198
00:17:26.200 --> 00:17:30.359
it will pass the linter. So
that's the thing with sury Can. A

199
00:17:30.400 --> 00:17:36.160
linter will catch bugs. It will
catch you know, could be type errors

200
00:17:36.279 --> 00:17:40.160
or something like that, you know, but it won't catch sloppy code.

201
00:17:40.559 --> 00:17:45.599
If it works, even if you
build it, it won't catch that because

202
00:17:45.640 --> 00:17:48.480
it will build. It won't throw
any errors. So what sure Can does

203
00:17:48.559 --> 00:17:53.920
is that she actually looks at the
code itself and and you know, gives

204
00:17:55.000 --> 00:18:00.400
feedback on the actual code, like
you should not write this function like this,

205
00:18:00.599 --> 00:18:03.839
write it like this, or use
this package instead of that package.

206
00:18:03.359 --> 00:18:08.640
You know, that kind of feedback, the ocular feedback that a code reviewer

207
00:18:10.000 --> 00:18:17.200
usually gives his or her employees.
That's what sukin can do in our repository.

208
00:18:17.680 --> 00:18:22.480
So I'll actually I actually push on
that. Can you give a really

209
00:18:22.880 --> 00:18:29.759
super concrete example of the type of
feedback that you might get, like I

210
00:18:30.319 --> 00:18:33.279
can. I can show you if
you want to, if that's possible,

211
00:18:33.319 --> 00:18:37.759
well, and you can. And
that's nice, But we are primarily audio.

212
00:18:37.440 --> 00:18:41.559
Most of our listen, most of
our audience is you know, just

213
00:18:41.640 --> 00:18:44.880
listening. So it would be better
if you just describe it as much as

214
00:18:44.920 --> 00:18:49.440
best you can. Yeah. Sure. So Let's say that you are writing

215
00:18:49.720 --> 00:18:53.319
a piece of code that should,
you know, do a specific thing,

216
00:18:55.240 --> 00:19:00.359
and the code works. The code
that you wrote works, but it and

217
00:19:00.400 --> 00:19:06.640
it follows the code conventions and it's
passing all of the tests and all of

218
00:19:06.640 --> 00:19:11.240
that stuff that we you know,
run on the code base. But it

219
00:19:11.359 --> 00:19:17.240
might not be optimized, it might
be really slow, it might be poorly

220
00:19:17.279 --> 00:19:22.519
written, so to speak, and
that happens all of the time. So

221
00:19:22.599 --> 00:19:27.720
what Suriken does is that she makes
sure that the code is not only you

222
00:19:27.759 --> 00:19:32.599
know, follows our code conventions and
the linters and all of that stuff,

223
00:19:32.640 --> 00:19:37.319
but she actually makes sure that the
code is as effective and you know,

224
00:19:37.519 --> 00:19:45.039
fast and proficient as it could be
by giving you small tips, hints,

225
00:19:45.319 --> 00:19:51.720
pointers on what you could do better
when writing that specific piece of code.

226
00:19:51.839 --> 00:19:56.759
Let's say it's a function for logging
in. You can write log in functions,

227
00:19:56.799 --> 00:20:00.720
you know, in a hundred different
ways, but usually there's only one

228
00:20:00.759 --> 00:20:04.160
way that's efficient, effective and proven
to be like the way to do it.

229
00:20:04.839 --> 00:20:10.960
She will if you haven't written it
in that way, she can you

230
00:20:10.960 --> 00:20:14.359
know, give you feedback that that's
the way you should write it, please

231
00:20:14.400 --> 00:20:18.559
make this necessary change, and then
you know, the developer goes in and

232
00:20:18.599 --> 00:20:23.039
does that, and then I can
feel confident that, Okay, someone has

233
00:20:23.039 --> 00:20:29.279
looked at this and I can merge
it into the main branch. Basically,

234
00:20:29.799 --> 00:20:34.160
so very specific feedback on the actual
code, which is something a human being

235
00:20:34.240 --> 00:20:38.839
does today, is done by an
AI assistant that I built in like three

236
00:20:38.880 --> 00:20:45.359
minutes in our repository. And for
me, you know, when I look

237
00:20:45.440 --> 00:20:51.759
at it, I'm amazed that this
actually works. I'm amazed by it.

238
00:20:51.839 --> 00:20:55.759
I can sometimes, you know,
I get emails when sure It can mentions

239
00:20:55.799 --> 00:21:00.079
me in a comment on GitHub,
and I get blown away, like this

240
00:21:00.119 --> 00:21:03.880
is not actually a human being.
This is just AI that's trained to do

241
00:21:03.920 --> 00:21:07.279
a specific thing. But in that
context, in that small, you know,

242
00:21:07.519 --> 00:21:15.480
narrow vertical context, she does an
amazing job as well as any human

243
00:21:15.599 --> 00:21:22.119
might be able to do it.
Is there a GitHub repo for a sure

244
00:21:22.119 --> 00:21:26.000
again that we can look at or
yeah, so super the super Agent propository

245
00:21:26.000 --> 00:21:30.759
that you posted here in the chat
if you go to the issues tab and

246
00:21:32.519 --> 00:21:37.279
or sorry, the pull requests tab, which is where people you know contribute

247
00:21:37.319 --> 00:21:41.599
code and you open up a pull
request, you will see that there is

248
00:21:41.640 --> 00:21:48.319
an contributor that's named sure it can
Bites and she basically gives comments on you

249
00:21:48.359 --> 00:21:52.960
know, different type of depending on
what type of code you have writtain,

250
00:21:52.160 --> 00:21:56.680
she'll give you different type of comments
if it's if she doesn't find anything weird,

251
00:21:57.079 --> 00:22:00.799
she'll just say, good job,
you know, good job Charles,

252
00:22:00.839 --> 00:22:06.759
thank you for the contribution, thumbs
up love and that's that. Gotcha.

253
00:22:07.279 --> 00:22:11.519
But what I'm wondering about is,
you know, is there like a walkthrough

254
00:22:11.559 --> 00:22:15.519
to set up something like this or
yeah, so we have a I have

255
00:22:15.640 --> 00:22:21.400
a YouTube channel actually that has like
all of the I have a bunch of

256
00:22:21.440 --> 00:22:23.519
like videos and stuff. When I
set up a bunch of different type of

257
00:22:23.559 --> 00:22:27.279
assistants and she's one of them.
And actually the code is open source,

258
00:22:27.359 --> 00:22:33.960
so anyone can grab your it can
make her their own code reviewer if they

259
00:22:34.000 --> 00:22:37.880
want to. Does she also like, okay, have you seen her occasionally

260
00:22:37.920 --> 00:22:45.680
block full requests like not approveful requests? No. I trained her specifically to

261
00:22:45.839 --> 00:22:51.359
only give feedback and not block anything, because you know, I wanted to

262
00:22:51.440 --> 00:22:55.279
try it out. I didn't want
it to be so definitive. So she

263
00:22:55.440 --> 00:22:57.640
only gives feedback. You know,
it's up to the user to do the

264
00:22:57.759 --> 00:23:03.440
change or the country viewterr and up
to me to make sure that the code

265
00:23:03.599 --> 00:23:07.519
you know, works still when I
merge it in. But but she only

266
00:23:07.599 --> 00:23:12.039
she's she tries to be good vibes. I can, I can say as

267
00:23:12.079 --> 00:23:17.640
much as that, So no blocking, No, you know, this is

268
00:23:17.720 --> 00:23:21.720
bad. So she's trained to be
humble, nice and give you know,

269
00:23:22.240 --> 00:23:30.680
feedback, So it would be amusing
to train her on Linostova's responses. Yeah,

270
00:23:30.599 --> 00:23:34.559
yeah, yeah, yeah, And
that's actually a good you know,

271
00:23:34.680 --> 00:23:41.480
that's actually a good use case.
If you want the language model to act

272
00:23:41.920 --> 00:23:48.240
as a specific individual, if you
have data on that specific individual, Uh,

273
00:23:48.599 --> 00:23:52.400
you know, you could train the
model to to try to resemble the

274
00:23:52.480 --> 00:23:57.599
way like Linus would would answer a
code review. I'm guessing it wouldn't be

275
00:23:57.720 --> 00:24:03.000
as much of a good vibes that
I have sued. So basically what you're

276
00:24:03.039 --> 00:24:10.759
saying is if you use the entire
Linux kernel code based as the training data

277
00:24:10.839 --> 00:24:15.960
set, you will get very snippy
comments whenever anybody tries to do a pull

278
00:24:15.000 --> 00:24:21.039
request, you could get that or
yeah, you could absolutely do that.

279
00:24:21.200 --> 00:24:25.480
And I know that there are companies
out there doing exactly this, training models

280
00:24:25.519 --> 00:24:30.880
to resemble you know, Arnold Schwarzenegger
or whatever it might be. Right,

281
00:24:30.119 --> 00:24:33.200
So, right, you go pull
Elon Musk's tweets and say this is how

282
00:24:33.200 --> 00:24:37.680
you're supposed to respond. Right,
That would just that would just be so

283
00:24:37.799 --> 00:24:45.079
awesome. What is interesting to see? Yeah, to see stylistically, like,

284
00:24:45.440 --> 00:24:48.599
okay, go pull this person's tweets, right, as long as it's

285
00:24:48.640 --> 00:24:53.319
not like a corporately handled right,
they don't have pr people running their account,

286
00:24:53.960 --> 00:24:59.759
right, It's it's them straight into
the phone. Yeah. I recall

287
00:24:59.839 --> 00:25:04.119
like a few years ago, even
before the whole machine learning craze, I

288
00:25:04.160 --> 00:25:12.079
think Microsoft or somebody try and release
some sort of a chat bolt into Twitter,

289
00:25:12.680 --> 00:25:18.240
and she became a pornographic neo nazi
within like two days or something like

290
00:25:18.279 --> 00:25:22.559
that. Yeah, and they had
to pull her, They had to pull

291
00:25:22.599 --> 00:25:26.119
her off. They got so much
heat that it basically killed the whole AI

292
00:25:26.279 --> 00:25:30.319
think due to the heat they got
for that. So that's the downside of

293
00:25:32.119 --> 00:25:34.240
it, could be could be the
downside. But I'm a positive guy.

294
00:25:34.319 --> 00:25:37.960
I don't like you know, Yeah, I don't like to be like a

295
00:25:38.000 --> 00:25:41.480
doomer on this kind of stuff.
I believe that it's good for humanity.

296
00:25:41.599 --> 00:25:48.000
I believe that you know, it's
a must. It's a must. Well,

297
00:25:48.160 --> 00:25:52.640
and I think you can intelligently because
I don't know what parameters they put

298
00:25:52.680 --> 00:25:59.440
onto that Twitter bot from Microsoft.
They kind of said, well, we

299
00:25:59.559 --> 00:26:03.279
just turned it on all of Twitter, right, And yeah, I think

300
00:26:03.559 --> 00:26:08.119
it probably fed off of a bunch
of other bots, right that in some

301
00:26:08.200 --> 00:26:12.480
corner of Twitter that I just never
see. But I don't know. But

302
00:26:12.559 --> 00:26:17.880
this is interesting because you you can
specifically pick the data set that you want

303
00:26:17.920 --> 00:26:22.640
to emulate and then do it that
way. Right. So you said that

304
00:26:22.680 --> 00:26:26.839
you have two examples. You gave
us one, right, So the second

305
00:26:26.920 --> 00:26:33.039
one is is more of a you
know, enterprise use case. And so

306
00:26:33.359 --> 00:26:37.599
if you think of a regular company, let's say a you know, a

307
00:26:37.720 --> 00:26:41.640
producing company or a company that is
not a tech company, just a regular

308
00:26:41.720 --> 00:26:47.039
company, you know, And so
they have a bunch of data. You

309
00:26:47.039 --> 00:26:49.359
know, they have a bunch of
data in their management systems. They have

310
00:26:49.400 --> 00:26:53.920
a bunch of files, they have
a bunch of PDF excel sheets. They

311
00:26:53.960 --> 00:26:59.400
have a sales or CRM system,
they have a help desk system, they

312
00:26:59.400 --> 00:27:03.279
have a bunch of data about their
users. They have a bunch of other

313
00:27:03.359 --> 00:27:10.559
type of data, and there is
a lot of people working with extracting knowledge

314
00:27:10.640 --> 00:27:15.000
from this data. So if you
take like a marketing manager as an example,

315
00:27:15.839 --> 00:27:19.720
one of the one of the key
tasks of that marketing management manager is

316
00:27:19.759 --> 00:27:25.440
to look at different data and try
to figure out what works what doesn't work.

317
00:27:25.640 --> 00:27:29.200
That's one of the jobs that they
have to do in order to be

318
00:27:29.319 --> 00:27:34.640
successful. So the second use case
is that you can take like in my

319
00:27:34.759 --> 00:27:40.839
case, I took our GitHub repositories, but in an enterprise use case,

320
00:27:40.880 --> 00:27:44.960
you could take all of your enterprise
data and do the exact same thing.

321
00:27:45.400 --> 00:27:48.079
You can feed it to the model. You can train the model on that

322
00:27:48.160 --> 00:27:53.359
data, and you can start asking
questions about your data. You can ask

323
00:27:53.440 --> 00:28:00.599
questions like which you know, what
are my top five best customers, and

324
00:28:00.640 --> 00:28:03.119
it will give you an answer within
seconds. You can ask it to plot

325
00:28:03.319 --> 00:28:08.480
charts on sales and it will plot
a chart on your sales for the you

326
00:28:08.519 --> 00:28:14.960
know, for whatever time period that
you might have in mind. Usually how

327
00:28:14.960 --> 00:28:18.240
this works is that you have a
person at a company wants some data.

328
00:28:18.279 --> 00:28:23.440
They go to another person at a
company that has is tasked with like extracting

329
00:28:23.480 --> 00:28:29.240
that data. A so called analyst. And so what you can do is

330
00:28:29.279 --> 00:28:37.720
that you can increase productivity for all
your employees by just training a model on

331
00:28:37.759 --> 00:28:41.720
your data and making it available to
whoever should have access to that data,

332
00:28:41.759 --> 00:28:48.000
so they can ask questions without having
to go to a analyst or without having

333
00:28:48.039 --> 00:28:52.400
to wait one week to get an
answer. You can just ask and the

334
00:28:52.480 --> 00:28:56.920
model will answer that question. And
if you think about how much data a

335
00:28:56.000 --> 00:29:02.680
company of thousand employees of that size, which is not a big company like

336
00:29:02.680 --> 00:29:07.039
a medium sized company, how much
data they have and how much knowledge they

337
00:29:07.039 --> 00:29:14.400
can extract using this technology by just
training a model on it. So that's

338
00:29:14.440 --> 00:29:18.319
the second use case that we see
a lot of. Basically, that's the

339
00:29:18.440 --> 00:29:25.559
use case that people use it for
super agent that is Yeah, So two

340
00:29:25.640 --> 00:29:34.039
questions about that really. Question number
one, as we've seen with general machine

341
00:29:34.119 --> 00:29:41.960
learning models chag EPT and whatnot,
occasionally they quote unquote lie, they provide

342
00:29:42.039 --> 00:29:48.720
misinformation, and they do it in
a way that seems really reasonable and self

343
00:29:48.720 --> 00:29:55.519
assured, which can really lead people
down the wrong path. So my first

344
00:29:55.599 --> 00:30:00.759
question in that context is when you, let's say, train the the agent

345
00:30:00.960 --> 00:30:08.799
on your internal corporate data, how
likely is it that when you ask the

346
00:30:08.920 --> 00:30:17.000
question, you'll potentially get misinformation.
Yeah, so it is likely, and

347
00:30:17.200 --> 00:30:21.160
we call that hallucination. So the
model can hallucinate, you know, and

348
00:30:21.200 --> 00:30:26.400
give a false false answer, false
answer to any query or question. Now

349
00:30:26.400 --> 00:30:30.559
the question is how do you solve
that problem? Because if you think about

350
00:30:30.599 --> 00:30:33.319
it, if I ask you something, Dan, if we were working at

351
00:30:33.319 --> 00:30:37.519
the same company, I would ask
you a question, how do I know

352
00:30:37.640 --> 00:30:45.680
that you are correct? The only
the only way to know that you are

353
00:30:45.720 --> 00:30:52.039
correct is to see the sources from
which you derived the answer to whatever question

354
00:30:52.119 --> 00:30:56.000
I ask you. If I ask
you how many customers do you do we

355
00:30:56.039 --> 00:31:00.440
have today and you just come up
with a number, you know that could

356
00:31:00.440 --> 00:31:03.960
be wrong. So usually what you
do is that you make a PowerPoint presentation

357
00:31:04.119 --> 00:31:10.880
and you show the actual data and
then you you you answer that question by

358
00:31:11.079 --> 00:31:15.759
showing the underlying data. And so
what Superagent does is the exact same thing.

359
00:31:17.400 --> 00:31:22.640
Instead of just you know, blindly
uh accepting a text that is generated

360
00:31:22.720 --> 00:31:30.839
by a model, we also uh
you know, uh make the underlying data

361
00:31:30.880 --> 00:31:34.400
transparent. So we actually show if
you ask a question about a contract,

362
00:31:34.960 --> 00:31:40.240
not only do we answer that question, we also show you that specific contract.

363
00:31:41.400 --> 00:31:45.799
Not only the specific contract but also
the section that was used to answer

364
00:31:45.799 --> 00:31:51.640
the question. So you can ocularly
look at the source, look at the

365
00:31:51.680 --> 00:31:56.000
answer, and you know, make
up your mind if this is you know,

366
00:31:56.119 --> 00:32:00.720
makes sense or not. If it
does make sense, you have the

367
00:32:00.799 --> 00:32:06.559
possibility to rate the response. So
if it's a good response, you give

368
00:32:06.599 --> 00:32:08.960
it a thumbs up, If it's
a bad response, you give it a

369
00:32:09.039 --> 00:32:15.480
thumbs down. Every time you give
it a signal, or engine fine tunes

370
00:32:15.519 --> 00:32:21.640
the model on those signals so that
the responses get better and better over time.

371
00:32:22.160 --> 00:32:27.000
But I think the main thing is
we are all used to using like

372
00:32:27.200 --> 00:32:30.759
I am, at least using chat
schipt. One of the issues with chatchipt

373
00:32:31.000 --> 00:32:37.599
is that it doesn't actually show you
the underlying source. So if you could

374
00:32:37.720 --> 00:32:42.400
visualize that, you know, with
the charts, with data, with tables,

375
00:32:42.480 --> 00:32:49.000
with deep links to documents, then
that's a completely different game. And

376
00:32:49.079 --> 00:32:53.039
that's the way humans are used to
communicating data and stuff to each other.

377
00:32:53.200 --> 00:32:57.640
Like if you go on Twitter right
now, somebody writes something, how do

378
00:32:57.720 --> 00:33:02.599
you know it's true? You don't
until you actually check out the data or

379
00:33:02.640 --> 00:33:07.039
the source. And that's what we
are trying to visualize, not only like

380
00:33:07.160 --> 00:33:12.839
the answer from the model, but
also the underlying data that is used to

381
00:33:13.559 --> 00:33:19.960
answer that question by the model.
Cool. That's that's really insightful. And

382
00:33:20.400 --> 00:33:27.000
my second question in this context is
how do you provide or what safeguard do

383
00:33:27.039 --> 00:33:34.680
you provide against inadvertently leaking private or
secure data. I mean, if I

384
00:33:34.799 --> 00:33:40.359
train something on a model, and
it's quite possible that somebody asks a question

385
00:33:40.480 --> 00:33:45.440
that will reveal data that you know
I don't want revealed, right, and

386
00:33:45.480 --> 00:33:52.079
so this is a big question.
And this is the primary reason to why

387
00:33:52.160 --> 00:33:57.359
Superagent is open source. So when
it's open source, it allows you to

388
00:33:57.400 --> 00:34:01.640
do two things. The first thing
is that you can deploy Superagent to your

389
00:34:01.759 --> 00:34:08.639
own infrastructure, completely isolated in your
own environment. Nobody else has access to

390
00:34:09.159 --> 00:34:15.239
your data or anything like that.
The second thing is that we allow you

391
00:34:15.519 --> 00:34:21.880
to run Superagent with your own language
models. Usually these language models are open

392
00:34:21.920 --> 00:34:27.039
source models like Lama too that you've
deployed to your own environment, or Mistrol,

393
00:34:27.360 --> 00:34:30.679
which is a new model which is
very effective, which you have deployed

394
00:34:30.679 --> 00:34:36.679
to your own model. I myself
am not a believer of proprietary models at

395
00:34:36.719 --> 00:34:42.800
all. I don't believe that.
I don't believe that a company if the

396
00:34:42.920 --> 00:34:49.119
end game is to get enterprises to
adopt this technology. I don't believe that

397
00:34:49.199 --> 00:34:52.719
they can adopt it if it's black
boxed. I don't believe that that can

398
00:34:52.760 --> 00:34:59.719
happen. And I don't see any
other examples actually where enterprises give away their

399
00:34:59.800 --> 00:35:04.400
day to a black box and don't
have any control over that data. That

400
00:35:04.760 --> 00:35:08.800
very rarely happens. And me,
as a developer, if I'm developing some

401
00:35:08.960 --> 00:35:15.199
kind of app, it's very you
know, it's very rare that the underlying

402
00:35:15.400 --> 00:35:23.119
core technology is outsourced to some third
party black box company. It almost never

403
00:35:23.239 --> 00:35:30.360
happens. Almost never happens. One
example is like Google Maps. I don't

404
00:35:30.360 --> 00:35:34.679
know if you guys remember, but
initially when the iPhone was launched, we

405
00:35:34.760 --> 00:35:37.320
only had Google Maps. There were
no Apple Maps, there was no app.

406
00:35:37.480 --> 00:35:43.119
What happened, Well, Apple found
out like like any same company would

407
00:35:43.159 --> 00:35:46.320
do, like, we can't give
away all of the you know, traffic

408
00:35:46.440 --> 00:35:51.760
and data to Google on our platform. So what are we supposed to do?

409
00:35:51.920 --> 00:35:55.960
The only way to solve that is
to build your own maps you know

410
00:35:57.079 --> 00:36:04.159
app and deploy that as an alternative. So Superagent allows anyone to take the

411
00:36:04.199 --> 00:36:08.559
platform. It's open source, it's
free. The boy to your own environment,

412
00:36:08.800 --> 00:36:14.119
use your own model to run it
without having to leak any data to

413
00:36:14.239 --> 00:36:22.159
any external party, including US.
So that's like the way to mitigate that

414
00:36:22.400 --> 00:36:25.920
issue, which is a big issue. And I believe that you can build

415
00:36:27.039 --> 00:36:31.960
you know, small hobby projects on
top of open AI and GPTs which they

416
00:36:32.000 --> 00:36:37.159
have just released. But I don't
think that an enterprise grade like healthcare company

417
00:36:37.800 --> 00:36:43.239
could leverage that. I don't think
a legal firm or law firm could leverage

418
00:36:43.280 --> 00:36:47.519
that due to the nature of it
being black box and proprietory. So that's

419
00:36:47.519 --> 00:36:52.360
why I believe in open source.
So to clarification or follow up questions on

420
00:36:52.400 --> 00:36:57.320
that, first of all, when
you're saying you use your own data or

421
00:36:57.320 --> 00:37:00.679
your own model, what you're actually
from my ownunderstanding, what you're actually saying

422
00:37:00.800 --> 00:37:06.239
is that you start with a general
model, but then you refine it with

423
00:37:06.320 --> 00:37:13.119
your own data, and that refined
model stays within your organization and never leaves.

424
00:37:13.280 --> 00:37:20.400
Is that is my understanding? Correct? Yes? And you also probably

425
00:37:20.480 --> 00:37:29.239
make a distinction between which data you
use for internal versus external services. So

426
00:37:29.360 --> 00:37:34.440
for example, if if you know, in our cases next insurance, let's

427
00:37:34.480 --> 00:37:37.400
say we might train I work at
an insurance company. You know, we

428
00:37:37.480 --> 00:37:42.599
do a lot of stuff with machine
learning and whatnot. That's one of the

429
00:37:42.679 --> 00:37:45.960
things about us that you do a
lot of stuff online and you know,

430
00:37:46.559 --> 00:37:51.440
use MARC learning. So there would
be a difference. You know, you

431
00:37:51.519 --> 00:37:59.159
might use that internal data about the
policies that people have for the internal operation

432
00:37:59.320 --> 00:38:06.000
of the company, but you won't
expose that to to external users, whereas

433
00:38:06.039 --> 00:38:10.280
you might train a model for external
use based on you know, the questions

434
00:38:10.559 --> 00:38:17.719
and that you might ask uh and
various you know, general terms that are

435
00:38:19.000 --> 00:38:22.159
pub in a public domain about you
know, types of insurance and stuff like

436
00:38:22.199 --> 00:38:28.119
that. That that would that would
be externally available, right, And the

437
00:38:28.480 --> 00:38:32.639
way we we we do that is
that you know, every agent or assistant

438
00:38:32.639 --> 00:38:38.559
that you create with superagents gets its
own little brain, its own little memory,

439
00:38:38.760 --> 00:38:44.559
its own data. It's completely decoupled
from other assistants. So you can

440
00:38:44.599 --> 00:38:50.880
actually deploy hundreds of these assistants with
that are trained on different data sets that

441
00:38:51.159 --> 00:38:53.960
some of them might be for internal
use, some of them might be for

442
00:38:54.039 --> 00:39:00.000
external use. A good example is
we are working with the ispeing in the

443
00:39:00.119 --> 00:39:08.199
UK and they have one assistant that's
trained on internal data that they use to

444
00:39:08.559 --> 00:39:14.960
you know, educate employees on different
things inside of their company, and then

445
00:39:15.000 --> 00:39:22.079
they have a customer support assistant which
is only meant to help their users or

446
00:39:22.119 --> 00:39:25.800
customers with general queries like how do
I reset my router, how do I

447
00:39:25.880 --> 00:39:29.760
do this? How do I do
that? And that's only trained on you

448
00:39:29.800 --> 00:39:35.760
know, public information that they have
on their website. So the answer to

449
00:39:35.840 --> 00:39:42.000
that is that it's very easy to
deploy a lot of these assistants. And

450
00:39:42.239 --> 00:39:45.320
I would say, like, in
average, each user has around five different

451
00:39:45.360 --> 00:39:52.719
assistants that they run on our platform. So if my understanding is correct,

452
00:39:52.760 --> 00:39:58.360
you basically deliver three main things,
if I find the same correctly. One

453
00:39:58.800 --> 00:40:06.400
is the actual agent itself, like
clone our repo, run our agent on

454
00:40:06.599 --> 00:40:09.360
wherever you want to, you know, run as many instances of it as

455
00:40:09.360 --> 00:40:14.960
you like. The second thing that
you provide is the way to is the

456
00:40:15.000 --> 00:40:22.880
ability to take an existing quote unquote
standard the open source language model, and

457
00:40:22.960 --> 00:40:28.320
then refine it using your own data. And the final thing that I understand

458
00:40:28.320 --> 00:40:35.199
that you're giving is the way to
attach those agents to various API or input

459
00:40:35.239 --> 00:40:39.760
output sources. Is my understanding correct
that that is the stuff that you provide.

460
00:40:40.239 --> 00:40:45.159
That is exactly three things So the
three things we usually, you know,

461
00:40:45.199 --> 00:40:49.320
we have a different way of explaining
them, but I would say it's

462
00:40:49.480 --> 00:40:53.239
perception. That's the first thing.
That's the model itself, the brain,

463
00:40:53.679 --> 00:40:57.840
or sorry, this is the brain. The second thing is the perception,

464
00:40:58.079 --> 00:41:00.719
which is the data that you feed
to it. So we have the brain,

465
00:41:01.000 --> 00:41:06.280
you have the perception. And the
third thing is what we call tools.

466
00:41:06.639 --> 00:41:10.440
And a tool could be an existing
API, it could be a third

467
00:41:10.480 --> 00:41:15.440
party service such as you know,
Salesforce, but it could also be code

468
00:41:15.800 --> 00:41:20.440
that you want the assistant to run, so you could build you know,

469
00:41:20.559 --> 00:41:28.039
automation workflows with assistants that run code, predefined functions, or whatever it might

470
00:41:28.079 --> 00:41:31.599
be. We call them tools.
So it's the brain, the perception,

471
00:41:32.239 --> 00:41:37.039
and then the tools. These are
the three main things that we the three

472
00:41:37.239 --> 00:41:42.880
main pillars that Superagent is built on, and we make it easy for any

473
00:41:42.920 --> 00:41:47.960
developer to orchestrate them in order to
create an assistant that can do basically anything

474
00:41:49.239 --> 00:41:55.400
that you would wanted to do.
So if I wanted to build an assistant,

475
00:41:55.840 --> 00:42:00.000
I guess the things that I'm thinking
about here are you know one it

476
00:42:00.039 --> 00:42:04.280
sounds like, yeah, I can
hook it up to open AI, or

477
00:42:04.360 --> 00:42:08.639
I can you know, pull in
my own model. That's that's probably you

478
00:42:08.639 --> 00:42:14.000
know, beyond having it set up
and being able to access it through standard

479
00:42:14.360 --> 00:42:21.000
methodologies, you know, you handle
all of the stuff as far as like

480
00:42:21.480 --> 00:42:27.360
providing it more data or providing it
specific data and then extracting the responses.

481
00:42:28.639 --> 00:42:31.280
I guess the other part of a
chatbot, though, is or an assistant,

482
00:42:31.599 --> 00:42:36.880
is the delivery, right, So
whether it's in some kind of user

483
00:42:36.920 --> 00:42:39.800
interface. I'm thinking like code assistance, right where you have them plugged into

484
00:42:39.800 --> 00:42:44.760
like visual studio code and it'll highlight
code and give you feedback on the code

485
00:42:44.800 --> 00:42:47.440
and things like that. But I'm
also thinking like chatbots, right, so

486
00:42:47.480 --> 00:42:52.960
maybe a discord bot or a you
know, an embedded bot on your website

487
00:42:52.960 --> 00:42:58.480
that people can ask questions of and
things like that. So how do you

488
00:42:58.519 --> 00:43:04.639
interface with the delivery of these systems? So we do that in two ways.

489
00:43:04.760 --> 00:43:07.880
We do that in a so called
no code way, which is basically,

490
00:43:08.280 --> 00:43:16.199
you create your assistant and we'll give
you a embeddable chat or a embeddable

491
00:43:16.599 --> 00:43:22.760
you know, user interface which allows
your users to interact with this assistant.

492
00:43:23.119 --> 00:43:30.159
Similar very similar to how chat GPT
is formed. Basically super simple but still

493
00:43:30.199 --> 00:43:35.760
powerful. So that's the first way. That's for developers that are you know,

494
00:43:35.960 --> 00:43:39.840
just starting out trying to prototype something, trying to get a feel for

495
00:43:40.079 --> 00:43:45.320
how how their assistant you know,
actually works and how it how it how

496
00:43:45.360 --> 00:43:51.000
accurate it is, and you know, prototyping. The second way, which

497
00:43:51.039 --> 00:43:54.360
is the most used way, is
that we give you three set of SDKs

498
00:43:54.400 --> 00:44:00.639
and a rest API, so you
can use either of these SDKs or rest

499
00:44:00.679 --> 00:44:06.000
APIs to orchestrate your own assistance and
then build whatever type of UI you want

500
00:44:06.920 --> 00:44:09.639
for the delivery part. So you
know, the thing with I think that

501
00:44:09.880 --> 00:44:14.960
something that people are missing, you
know, is when you look at chat

502
00:44:15.000 --> 00:44:19.119
GPT and when I look at it, and I come from a design background.

503
00:44:19.159 --> 00:44:22.480
I've designed and built you know,
front and type of applications all my

504
00:44:22.599 --> 00:44:29.599
life basically, And the one strange
thing is that when chat GPT launched,

505
00:44:29.800 --> 00:44:35.639
it was like all of the other
UI components that have been refined for you

506
00:44:35.679 --> 00:44:42.360
know, a century just got thrown
away and got replaced by a chat markdown

507
00:44:42.559 --> 00:44:45.440
box. And you know, that's
in my you know, when I think

508
00:44:45.440 --> 00:44:52.920
about that, that's really like,
that's really not the way the Internet usually

509
00:44:52.000 --> 00:44:57.400
works. You know, when you
consume a software, it has a bunch

510
00:44:57.440 --> 00:45:05.280
of different components which makes it feel
valuable where you can extract more value than

511
00:45:05.400 --> 00:45:08.639
just text. You know. One
good example of this is a company that's

512
00:45:08.679 --> 00:45:13.519
called Perplexity AI. I don't know
if you guys know about them, but

513
00:45:13.559 --> 00:45:19.719
they have built basically the new Google
Search. And it's not just the chat.

514
00:45:20.320 --> 00:45:24.239
It has a bunch of other type
of UI components that makes that user

515
00:45:24.400 --> 00:45:34.519
experience ten times better than what Google
Search is today. So I believe that

516
00:45:35.480 --> 00:45:38.880
if you are going to deploy a
chat you know, an AI assistant chat

517
00:45:38.920 --> 00:45:46.039
plot, you need to use existing
you know UI components that people are used

518
00:45:46.079 --> 00:45:52.119
to, not only chat. It's
very limiting in what you can accomplish with

519
00:45:52.239 --> 00:45:57.400
only chat, and it doesn't work
well for all use cases. It might

520
00:45:57.480 --> 00:46:00.639
work well if you are trying to
chat with an aim then it works well,

521
00:46:00.960 --> 00:46:06.559
but if you're trying to extract knowledge, then chat might not be the

522
00:46:06.599 --> 00:46:12.719
best way to do that alone.
Stand alone. There might be other components

523
00:46:12.760 --> 00:46:16.039
that you would want to visualize for
the user in order for them to be

524
00:46:16.119 --> 00:46:22.800
able to quickly extract information. Simple
example would be a chart you know that

525
00:46:23.000 --> 00:46:30.920
is that a user can interact with, which is very common in any other

526
00:46:30.000 --> 00:46:36.880
software. Right, all dashboards have
charts, but chatchipt doesn't, you know,

527
00:46:37.000 --> 00:46:43.039
And so I believe that in the
future we will see you know,

528
00:46:43.559 --> 00:46:47.239
if you think about all of the
UI component libraries on MPM, like the

529
00:46:47.320 --> 00:46:52.800
registry for no JS, there's a
bunch of awesome UI components out there.

530
00:46:53.159 --> 00:47:00.719
I believe that AI and these UI
components will merge eventually so that you get

531
00:47:00.760 --> 00:47:08.360
the power of AI in those use
user facing UI components. So having an

532
00:47:08.679 --> 00:47:17.079
AI dynamically generate the user interface needed
for the user to absorb or extract information

533
00:47:17.239 --> 00:47:22.800
that they are looking to extract from
the assistant, I believe that's the future.

534
00:47:22.199 --> 00:47:28.480
That's something that we are working on
actively as well, making it more

535
00:47:28.599 --> 00:47:35.519
dynamic and making it more rich the
user experience, not just only chat.

536
00:47:35.960 --> 00:47:42.920
I believe that's a big thing for
adoption, especially if you're looking at enterprises

537
00:47:43.320 --> 00:47:46.960
that are trying to adopt this inform
you know technology. By the way,

538
00:47:47.199 --> 00:47:57.239
what is superagent implemented in which TIM
members back in back in this Python uh

539
00:47:57.679 --> 00:48:05.320
concurrent Python so asinc which was quite
a mess but eventually worked out, and

540
00:48:06.079 --> 00:48:09.400
it runs on fast API, which
is an open source framework for running concurrent

541
00:48:09.480 --> 00:48:17.280
Python threaded Python basically, and then
we have some services that are building Rust

542
00:48:17.679 --> 00:48:23.159
specifically for memory. So you know, if you just take this is interesting,

543
00:48:23.400 --> 00:48:27.840
but if you just take a language
model off the shelf and try to

544
00:48:27.920 --> 00:48:32.599
chat with it, it won't actually
remember your previous conversation, and it's like

545
00:48:32.840 --> 00:48:37.480
talking to someone that doesn't remember stuff, you know, and that's just not

546
00:48:37.599 --> 00:48:43.960
feasible. So you have to build
memory. And that memory usually is some

547
00:48:44.039 --> 00:48:46.360
kind of key value store, some
kind of readiest database, you know,

548
00:48:46.480 --> 00:48:52.480
and then you need some way of
integrating your model into that key value store.

549
00:48:53.000 --> 00:48:58.320
So that part of our service is
built in Rust. The memory,

550
00:48:58.400 --> 00:49:00.840
it's forth a short term memory,
but also a longer term memory, so

551
00:49:00.880 --> 00:49:05.280
you can ask questions about stuff you
chatted about, you know, a month

552
00:49:05.320 --> 00:49:09.719
ago. So that's built in RUSS. And then the UI is built on

553
00:49:10.159 --> 00:49:16.400
next jas, which is a framework, open source React based framework typescript and

554
00:49:17.159 --> 00:49:22.000
yeah, so that's that's the staff. Basically. Infrastructure wise, we you

555
00:49:22.039 --> 00:49:30.679
know, rely heavily on GCP and
AWS of course, and so that's where

556
00:49:30.719 --> 00:49:36.599
the infrastructure is at this point.
Okay, so I mid missed this because

557
00:49:36.599 --> 00:49:39.679
I came in late. But how
is this different from Aluma how is the

558
00:49:39.679 --> 00:49:46.880
different plophically and how's it different technically? So technically LAMA runs locally on your

559
00:49:46.920 --> 00:49:53.559
machine. Uh super, any where
you put it. Uh no, it

560
00:49:53.599 --> 00:49:58.039
doesn't actually because you need to put
the model somewhere, right, So it

561
00:49:58.159 --> 00:50:04.280
runs the model locally but right right, But what I mean is wherever you

562
00:50:04.280 --> 00:50:06.679
put it, right, Like I
can put it on Digital Ocean. If

563
00:50:06.679 --> 00:50:07.719
I want to pay a billion dollars
a month, I can put it on

564
00:50:07.719 --> 00:50:14.760
AWS. But like, yeah,
yes, yes, yeah, So it's

565
00:50:15.079 --> 00:50:19.599
similar to a LAMA in the sense
that you can run different type of models.

566
00:50:19.920 --> 00:50:23.719
Its open source and that kind of
stuff. What differs is that we

567
00:50:23.880 --> 00:50:30.079
focus on a specific type of agent, the knowledge assistant as we call it.

568
00:50:30.119 --> 00:50:35.599
So we feed your model and fine
tune your model on the data that

569
00:50:35.639 --> 00:50:40.599
you want the model to have access
to. We both fine tune the language

570
00:50:40.599 --> 00:50:45.800
model. But something that people miss
a lot is that there is actually another

571
00:50:45.920 --> 00:50:51.960
type of model involved in, you
know, fetching data from third party sources.

572
00:50:52.519 --> 00:50:58.199
That model is called the retrieval or
encoder model. We also fine tune

573
00:50:58.280 --> 00:51:01.760
that model on your data. There's
actually two models in play. Usually when

574
00:51:01.760 --> 00:51:06.280
you use chat, youpt or anything
else, and you upload a file to

575
00:51:06.360 --> 00:51:14.079
that. So these models we fine
tune on your specific data, making them

576
00:51:14.159 --> 00:51:19.199
super accurate for the specific use case
that you have for your assistant. And

577
00:51:19.280 --> 00:51:23.480
so it's an orchestration layer. Is
that what's referred to as long chain Because

578
00:51:23.480 --> 00:51:25.559
I was looking into this because I
wanted to figure out how to do with

579
00:51:25.599 --> 00:51:30.599
a LAMA. Yeah, and what
was coming up was long chain And it's

580
00:51:30.639 --> 00:51:35.239
like, it's not part of a
LAMA, but it's like you there's an

581
00:51:35.239 --> 00:51:37.000
API you feed in more data.
Is that right? Is that what that

582
00:51:37.119 --> 00:51:43.599
is? Right? Yeah? So
so lang chain is an open source framework

583
00:51:43.760 --> 00:51:49.920
which allows lang Chain is an open
source framework that allows you to I'm actually

584
00:51:49.920 --> 00:51:53.840
a contributor there. That's where I
started off contributing to that framework that allows

585
00:51:53.920 --> 00:52:00.719
you to build these type of assistance, any type of assistant. It has

586
00:52:00.960 --> 00:52:07.239
similarities to superagents, and we actually
utilized lang chain in parts of our infrastructure

587
00:52:07.239 --> 00:52:15.079
as well. The main difference is
that lang chain is built for machine learning

588
00:52:15.119 --> 00:52:20.480
engineers, people that know what the
heck they're doing, people who know how

589
00:52:20.519 --> 00:52:27.039
to accurately fine tune a model,
how to accurately orchestrate the whole assistant,

590
00:52:27.199 --> 00:52:34.320
you know. Superagent documentation seemed like
they were using very very technical terms that

591
00:52:34.360 --> 00:52:37.880
once I understood it seemed like things
that could have been explained in a sentence.

592
00:52:38.519 --> 00:52:45.480
Yeah. So Superagent is like,
you know, the version of lang

593
00:52:45.559 --> 00:52:51.400
chain that's meant for the mainstream developer
people that don't have any skill set or

594
00:52:51.440 --> 00:52:57.599
any knowledge or background in this type
of technology. In the short, you

595
00:52:57.599 --> 00:53:01.760
know, if you want to explain
Superagent, it's like Stripe for payments,

596
00:53:02.480 --> 00:53:07.800
but it's for building AI assistance instead. Think you know, prior to Stripe,

597
00:53:08.800 --> 00:53:12.679
you know how hard it was to
you know, set up payment,

598
00:53:12.800 --> 00:53:15.800
recurring payments, subscriptions on your whatever, you know service that you were building.

599
00:53:16.039 --> 00:53:22.880
It was a pain in the butt. Uh. Most of these open

600
00:53:22.880 --> 00:53:25.840
source frameworks are you know, give
you the building blocks to build whatever you

601
00:53:25.880 --> 00:53:30.199
want, but you need to know
what you're doing. In the Superagent case,

602
00:53:30.239 --> 00:53:35.760
you don't need to know anything.
You just instructed to do specific things

603
00:53:35.840 --> 00:53:38.000
with texts. Give it a prompt, as we call it, You feed

604
00:53:38.000 --> 00:53:42.519
it with data, and we take
care of the heavy lifting on our side

605
00:53:43.000 --> 00:53:50.360
so as to make sure it's actually
use a chatbot to generate the other personas

606
00:53:51.360 --> 00:53:55.440
uh, yeah, we use we
use language models to generate training data and

607
00:53:55.679 --> 00:54:00.960
you know, generate all of the
stuff that needs to go into the model

608
00:54:00.039 --> 00:54:04.840
in order for it to be accurate
for the specific use case that you have,

609
00:54:05.079 --> 00:54:07.519
and you don't have to think about
any of that as a developer.

610
00:54:07.599 --> 00:54:10.599
That's on our side. That's like
the value we bring to you as a

611
00:54:10.639 --> 00:54:15.920
developer. You know, if you
talk to a Superagent user and you ask

612
00:54:15.000 --> 00:54:20.360
them why do you use Superagent?
The number one thing they tell us is

613
00:54:20.400 --> 00:54:24.519
that Superagent allows me to focus on
my product. I don't need to become

614
00:54:24.880 --> 00:54:29.679
some other kind of engineer and learn
something new. I can focus on the

615
00:54:29.679 --> 00:54:34.440
stuff I'm building, like an iPhone
app, and I can just integrate all

616
00:54:34.519 --> 00:54:38.519
of this wonderful technology with a simple
SDK like in twenty lines of code.

617
00:54:39.400 --> 00:54:47.840
So that's the value prop that we
bring to developers. Cool cool, All

618
00:54:47.960 --> 00:54:53.360
right, well that's nice, thank
you. I don't want to shut down

619
00:54:53.360 --> 00:54:58.960
the conversation, but I do have
another podcast scheduled in like eighteen minutes.

620
00:55:00.639 --> 00:55:06.400
You're living a busy life, chuck, Yeah, So I'll just I'll just

621
00:55:06.480 --> 00:55:12.079
ask one last final, really quick
question. Yeah, you usually run models

622
00:55:12.360 --> 00:55:20.079
locally or in the cloud in most
cases one hundred percent cloud, one percent

623
00:55:20.159 --> 00:55:24.840
cloud. That's so expensive though,
how can you but it isn't No,

624
00:55:25.000 --> 00:55:29.639
it isn't It isn't expensive. It
doesn't have to be on our cloud.

625
00:55:29.679 --> 00:55:31.159
It could be on your cloud.
You know. That's the thing. If

626
00:55:31.199 --> 00:55:35.320
you have if you can deploy your
model to your own cloud, you can

627
00:55:35.360 --> 00:55:39.679
deploy your model to these serverless like
infrod providers that are out there, and

628
00:55:39.719 --> 00:55:44.199
you can get a model running for
you know, the price of running a

629
00:55:44.239 --> 00:55:47.760
model. It's going to go to
zero in a very short time, that's

630
00:55:47.800 --> 00:55:52.639
the thing. So it is that
with the cloud yet so far, so

631
00:55:52.760 --> 00:55:58.519
far, everything that introduces more expensive
than the previous thing. Prices have not

632
00:55:58.559 --> 00:56:02.119
gone down in a decade. They've
up. Yeah. But but if we

633
00:56:02.360 --> 00:56:07.079
if you think about you know,
uh, it might not be zero now,

634
00:56:07.519 --> 00:56:12.559
but if you think about the trend, even open Ai, you know,

635
00:56:12.840 --> 00:56:15.760
they slash their prices with like yeah, if you're talking about open Ai,

636
00:56:15.960 --> 00:56:19.559
yes, yes, yes, because
they are going to optimize it and

637
00:56:19.599 --> 00:56:21.679
they may eventually be able to get
the price down, you know, not

638
00:56:22.280 --> 00:56:24.719
that they're not having to pay what
you would have to pay for Azure right

639
00:56:25.000 --> 00:56:30.239
and getting they're getting a very different
rate. Yeah. And and that's the

640
00:56:30.320 --> 00:56:36.239
thing that the other providers as youre
a w S. They are right now

641
00:56:36.320 --> 00:56:42.800
as we speak, deploying technology and
this has already happened where you can basically

642
00:56:43.000 --> 00:56:49.239
host your model in a serverleust environment
and only pay you know, the couple

643
00:56:49.280 --> 00:56:53.840
of zero points zero zero two five
cents per token that you would pay open

644
00:56:53.880 --> 00:57:00.960
ai. So this transition is already
happening. It's a requirement otherwise nobody will

645
00:57:01.000 --> 00:57:07.280
be able to be able to run
this technology in production. You know.

646
00:57:07.800 --> 00:57:10.920
So if the price is high,
no business can run it. You cannot

647
00:57:12.039 --> 00:57:15.920
have a chatbot that you know costs
thousand, ten thousand dollars a month and

648
00:57:16.119 --> 00:57:22.000
three people are using it. So
the whole industry is pushing this for the

649
00:57:22.039 --> 00:57:24.679
prices to go down, and we
already see it now. Even the prices

650
00:57:24.679 --> 00:57:30.320
of the hardware is going down GPUs. So if I if I want to

651
00:57:30.400 --> 00:57:35.800
run Superagent I you said it's open
source, like, so I could just

652
00:57:35.840 --> 00:57:42.519
pay a flat forty dollars a month, get eight cores eight VCPUs and run

653
00:57:42.559 --> 00:57:45.679
it on that and that would be
good enough for you know a few people

654
00:57:45.760 --> 00:57:49.840
using it at a time. Yesaight, and completely free. You don't have

655
00:57:49.880 --> 00:57:53.079
to pay us anything since it's open
source. No what I mean is like

656
00:57:53.360 --> 00:57:55.960
I'd have to host it somewhere.
Yeah, you have to pay it.

657
00:57:57.719 --> 00:58:00.239
It's like forty bucks a month for
you know, and then you don't have

658
00:58:00.280 --> 00:58:02.679
to pay per token. You just
yeah, Okay, I would love I

659
00:58:02.679 --> 00:58:06.320
would love to learn how to host
this because I've got some people that are

660
00:58:06.559 --> 00:58:08.519
I was actually going to build something
with a Lama for some people, but

661
00:58:10.039 --> 00:58:16.079
yeah, I and I think let's
do that. And I think Llama is

662
00:58:16.119 --> 00:58:20.840
great. And the reason why I
think it's great is because it's completely open

663
00:58:20.880 --> 00:58:23.400
source. It allows you, as
a developer, to have complete control over

664
00:58:23.440 --> 00:58:28.400
what you're doing, where you're deploying
it, what models you're using. It's

665
00:58:28.519 --> 00:58:34.119
up to you. It's not up
to some you know company to decide where

666
00:58:34.159 --> 00:58:38.360
your data is, how you can
extract the data, and all of that

667
00:58:38.480 --> 00:58:43.800
stuff that comes with like proprietary black
box models. I don't. I don't.

668
00:58:43.800 --> 00:58:50.039
As I said initially, I am
strongly opposed to that type of model,

669
00:58:50.199 --> 00:58:52.920
and I don't think it will work. I don't. I don't think

670
00:58:52.960 --> 00:58:57.599
it will work. How do How
do I pay you for support and to

671
00:58:57.679 --> 00:59:00.039
make sure that superagent is still around? Is like the number one reason I

672
00:59:00.039 --> 00:59:05.440
pay for things is like, I
want to pay because I want the project

673
00:59:05.480 --> 00:59:09.079
that I'm paying for the product,
I want it to be successful so that

674
00:59:09.159 --> 00:59:13.199
when I wake up tomorrow, the
web page is still there and the download

675
00:59:13.199 --> 00:59:15.920
button is still there, and the
support email is still there. Because they

676
00:59:15.920 --> 00:59:21.519
don't need your money, They've got
why compiny their money? But yeah,

677
00:59:21.599 --> 00:59:27.000
I agree with Yeah, the bill
comes due and we we don't want to

678
00:59:27.119 --> 00:59:30.960
live off of VC money. That's
not the plan we want to We want

679
00:59:31.000 --> 00:59:36.880
to create and we talked about this
initially. The thing with open source is

680
00:59:36.920 --> 00:59:39.840
that it's great to build a community. You can get a lot of users,

681
00:59:40.159 --> 00:59:45.360
but it's very hard to create a
business out of that. A good

682
00:59:45.440 --> 00:59:52.440
example of that is, you know, let's take Django, the Python framework.

683
00:59:53.079 --> 00:59:59.199
How many businesses have been built on
Jangle A lot of them. How

684
00:59:59.239 --> 01:00:05.119
many people for Jangle zero? Same
thing with fast Api, it's one of

685
01:00:05.159 --> 01:00:09.119
the best Python frameworks out there.
How many people pay for it zero?

686
01:00:09.280 --> 01:00:14.360
How many people use it a lot? So it's really hard to take something

687
01:00:14.400 --> 01:00:19.360
open source and make a commercial business
out of it. That's what we're working

688
01:00:19.440 --> 01:00:23.159
on now to be able to do
that. There are examples of people who

689
01:00:23.239 --> 01:00:28.519
have succeeded with that. By offering
you know, support plans and stuff like

690
01:00:28.559 --> 01:00:34.960
that. There are ways of doing
it, but it is the solution is

691
01:00:35.039 --> 01:00:42.360
hosting. I'm not I don't think
that. I don't think that that will

692
01:00:42.599 --> 01:00:46.280
help because the whole premise here is
that you would want to host it yourself.

693
01:00:46.679 --> 01:00:52.119
You don't want to give your data
to us, to ISMAEL. You

694
01:00:52.119 --> 01:00:54.800
don't want me to have all your
financial data. You want to have all

695
01:00:54.840 --> 01:01:00.920
your financial data. So hosting might
work for the absolute, you know,

696
01:01:00.119 --> 01:01:06.000
smallest companies, but if you're working
with a healthcare company, they won't host

697
01:01:06.079 --> 01:01:08.679
with us at this point. So
what we are doing there is to give

698
01:01:08.719 --> 01:01:15.920
them services such as AJ mentioned support
packages. You know, we we we

699
01:01:15.960 --> 01:01:19.880
can run instances for them on their
cloud. There are a bunch of different

700
01:01:19.960 --> 01:01:23.960
business models you can run, but
it is hairy and it isn't you know,

701
01:01:24.280 --> 01:01:30.400
as straightforward as just having a B
to B SaaS company that is proprietory,

702
01:01:30.719 --> 01:01:34.280
you charge per month, people trust
you, et cetera, et cetera.

703
01:01:34.679 --> 01:01:38.519
So that was what I initially said, is that it is a hard

704
01:01:38.599 --> 01:01:43.519
thing to monetize and a lot of
people have failed, I mean, the

705
01:01:43.639 --> 01:01:46.159
greatst have failed at it. So
I'm just hoping I a buy button on

706
01:01:46.199 --> 01:01:50.440
it, and I'm going to buy
this thing in whatever form because I have

707
01:01:50.480 --> 01:01:53.800
are I have to build something.
I'm going to be using some mix of

708
01:01:53.840 --> 01:01:58.440
either Olama or open Ai. There's
still a little bit of you know what

709
01:01:58.480 --> 01:02:02.280
am I going to do? Your
solution. I can choose to switch between

710
01:02:04.320 --> 01:02:07.400
Hugging Face, which is where I
get the Alama models, and open Ai,

711
01:02:07.599 --> 01:02:13.079
which is where our prototype is deployed. So like to me, this

712
01:02:13.159 --> 01:02:17.639
provides a layer of abstraction that for
the things that we want to do for

713
01:02:17.679 --> 01:02:22.760
this project, this is the right
tool. So you put the buy button

714
01:02:22.760 --> 01:02:25.280
there, I'm going to buy it. It doesn't even really matter what you

715
01:02:25.400 --> 01:02:30.920
charge. I'm going to pay it
because i have a time crunch and I've

716
01:02:31.360 --> 01:02:35.639
got to get a storry. Sorry
but yeah, no, I you know,

717
01:02:35.719 --> 01:02:38.320
in a lot of ways I agree
with AJ and this reminds me of

718
01:02:38.360 --> 01:02:40.639
something that I'm going to throw out
my picks. But yeah, let's go

719
01:02:40.639 --> 01:02:45.000
ahead and do picks, and uh
yeah, I've got like ten minutes and

720
01:02:45.000 --> 01:02:49.840
then I've got to roll into the
other show. Dan, what are your

721
01:02:49.880 --> 01:02:54.599
picks? I'll make it short and
sweet this time. So my first pick

722
01:02:55.400 --> 01:03:04.599
is going to be Prometheus, the
monitoring solution. I've been using it a

723
01:03:04.639 --> 01:03:10.599
lot to as you people who've been
listeners to this podcast. No I do

724
01:03:10.760 --> 01:03:20.480
stuff related to performance, to analyzing
how applications execute, and Prometheus has been

725
01:03:20.519 --> 01:03:25.960
an amazing tool for this purpose.
So collecting all sorts of performance data and

726
01:03:27.159 --> 01:03:34.519
execution profiles, getting them in there, building dashboards using Grafana, running all

727
01:03:34.559 --> 01:03:39.559
sorts of from QL queries. I'm
now actually looking to try to solve a

728
01:03:39.599 --> 01:03:46.119
really hairy challenge within our organization.
We've got something like fifteen micro services,

729
01:03:46.159 --> 01:03:51.960
some of them having hundreds of endpoints, and I want to be able to

730
01:03:52.039 --> 01:04:00.360
analyze the entire system to catch performance
degradations without having to manually configure and specify

731
01:04:00.639 --> 01:04:05.519
you know, limits manually for each
and every endpoint and dependencies and whatnot.

732
01:04:06.199 --> 01:04:12.000
And it'll be really interesting to see
if I can get something like that up

733
01:04:12.039 --> 01:04:17.639
and running just based on the capabilities
that are built into Prometheus. But you

734
01:04:17.679 --> 01:04:21.119
know, so far, so good, so we will say, but I

735
01:04:21.239 --> 01:04:25.639
have to shout this out as a
monitoring tool. And by the way,

736
01:04:25.679 --> 01:04:32.920
I also contributed back into the prom
ql no JS client, which was really

737
01:04:32.920 --> 01:04:38.159
cool, and I have some additional
ideas of some additional contributions that I want

738
01:04:38.199 --> 01:04:41.960
to do back to that project.
We probably should have the owner of that

739
01:04:42.000 --> 01:04:46.719
project on our show. It's a
really cool project, so that, yeah,

740
01:04:46.760 --> 01:04:49.960
for sure, So that would be
my first pick. My second pick

741
01:04:50.079 --> 01:04:56.800
is if you've listened to our past
episode, you know that we did it

742
01:04:57.039 --> 01:05:02.519
around a bunch of polls that I
ran off my x or Twitter account.

743
01:05:03.119 --> 01:05:08.480
I've recently run another one which is
getting a lot of votes even as we

744
01:05:08.559 --> 01:05:16.800
speak, which is basically trying to
see which framework is the unreact, Like

745
01:05:16.920 --> 01:05:23.039
if you think about React, what's
the opposite of React in the in for

746
01:05:23.199 --> 01:05:27.360
in front and frameworks? And the
options that I gave were, well,

747
01:05:27.400 --> 01:05:31.639
you know X only allows like four
options like max, so that that's kind

748
01:05:31.639 --> 01:05:38.760
of limiting. But the ones that
I gave our HTMX swelt solid, slash,

749
01:05:38.880 --> 01:05:44.639
quick, and other. And ask
the people who you know who answer

750
01:05:44.679 --> 01:05:48.400
other to like specify what they meant, and I got some really interesting responses.

751
01:05:48.519 --> 01:05:54.039
So I'll probably share the link to
that tweet, like people like people

752
01:05:54.119 --> 01:06:01.360
like Jack Harrington jumped on, Ryan
Corneato, Carson Grove himself and others.

753
01:06:01.400 --> 01:06:06.079
It's it's becoming a really interesting discussion. I'll just throw it out there that

754
01:06:06.360 --> 01:06:13.639
Ryan's Corneato's choice for the most unreact
framework out there. You know what it

755
01:06:13.760 --> 01:06:25.800
was. Can you guess no,
React is the most unreact one of course?

756
01:06:26.000 --> 01:06:30.719
Yeah. That he basically make like
made a distinction between the current react

757
01:06:30.800 --> 01:06:35.360
and when where react was ten years
ago and said that current react is like

758
01:06:35.440 --> 01:06:41.320
the most unreact compared to React of
ten years ago and vice versa. Uh

759
01:06:41.519 --> 01:06:45.480
So it was a really interesting choice. Anyway, It's it's a fun poll.

760
01:06:45.599 --> 01:06:48.559
We'll see how it comes out in
the end. I won't spill the

761
01:06:48.559 --> 01:06:54.840
beans about Too's in the lead,
although you might guess. Uh, and

762
01:06:54.920 --> 01:07:00.440
those would be my picks for today. Awesome, what are your picks?

763
01:07:01.119 --> 01:07:05.639
Well, first and foremost, I
got a his in Herbi dat Well,

764
01:07:05.679 --> 01:07:09.280
I think all the days are his
and Herbi days. I think they all

765
01:07:09.280 --> 01:07:15.079
have the female button as well.
But it was only thirty bucks. I

766
01:07:15.440 --> 01:07:17.039
don't know why I didn't get one
years ago. I guess I thought it

767
01:07:17.079 --> 01:07:20.760
was going to be complicated or something. The only thing complicated about it was

768
01:07:20.760 --> 01:07:25.079
the people who built my house.
Of course, couldn't spend the extra two

769
01:07:25.199 --> 01:07:29.960
dollars to put the adjustable pipe on
there, so I had to go down

770
01:07:29.960 --> 01:07:34.320
the street to Low's and grab a
four dollars and sixty nine cent connector piece

771
01:07:35.159 --> 01:07:39.519
to put it on, Like it
came with everything in the box that it

772
01:07:39.519 --> 01:07:42.719
should have come within the box.
It is. The toilet was installed in

773
01:07:42.760 --> 01:07:47.960
a way that it was permanent,
and I had to replace a fixed length

774
01:07:48.280 --> 01:07:53.639
tube that could not be moved in
any way because it was solid rather than

775
01:07:53.679 --> 01:07:59.960
flexible. But anyway, yeah,
so now instead of being like an eighty

776
01:08:00.239 --> 01:08:05.880
American and spending one hundred billion dollars
on toilet paper to do the job that

777
01:08:05.920 --> 01:08:10.760
the good Lord figured out how to
do for us millions of years ago.

778
01:08:12.599 --> 01:08:15.920
Yeah, yeah, that's that's the
exciting news. But I think, like

779
01:08:16.079 --> 01:08:23.600
warm water everywhere, like like going
on, it's just cold water. It's

780
01:08:23.640 --> 01:08:26.720
it's not fancy. It's just like
a cheap thirty dollars thing. It seems

781
01:08:26.760 --> 01:08:29.479
to work perfectly. It's not leaking
as far as I can tell, at

782
01:08:29.520 --> 01:08:31.520
least not. Yeah, it means
day one, but it's it's the reason

783
01:08:31.560 --> 01:08:34.079
I was late because it was gonna
be I had an hour. It's a

784
01:08:34.119 --> 01:08:39.039
ten minute project. It's like,
undo this one thing, put this thing

785
01:08:39.079 --> 01:08:41.840
in place of it. You're done. I mean it gets a little cramp

786
01:08:41.880 --> 01:08:45.960
depending on your bathroom side trying to
reach around. But then because the whole

787
01:08:45.960 --> 01:08:49.880
thing with the tube, and it's
like, oh crap, I can't put

788
01:08:49.920 --> 01:08:54.199
this back together. I have to
make a run to Low's. I have

789
01:08:54.239 --> 01:08:59.159
to wait and oh crap being the
operative word here, yeah, yeah,

790
01:08:59.279 --> 01:09:00.680
yeah, and then I and then
I had a nice crap after it all

791
01:09:00.880 --> 01:09:04.960
and was able to confirm that it
works. So anyway, Yeah, don't

792
01:09:04.960 --> 01:09:09.520
be a dumb American, be like
the like the people in the rest of

793
01:09:09.560 --> 01:09:13.640
the civilized world and and use the
same thing that people have been using for

794
01:09:13.760 --> 01:09:16.880
thousands of years to wipe your heinee. Okay, get some water in there.

795
01:09:17.439 --> 01:09:25.760
Goodness knows, and then I'll uh, there's there's a couple other things,

796
01:09:25.800 --> 01:09:30.960
but I'll try to just keep this
one short for today's purposes and later

797
01:09:31.199 --> 01:09:35.439
huh, Charlotte got to go in
four minutes, so fast, right.

798
01:09:35.640 --> 01:09:41.359
So the other thing I'll pick is
a LAMA, because I have used Olama

799
01:09:41.439 --> 01:09:44.880
and I've gotten value out of Alama, and it's super easy to get some

800
01:09:44.960 --> 01:09:47.720
of the models that automatically downloads them
from hugging face for you. You don't

801
01:09:47.760 --> 01:09:51.720
even have to know about hugging face. But I've used misterl and I've used

802
01:09:51.760 --> 01:09:55.880
code up, and I've used a
couple of other models, And depending on

803
01:09:55.920 --> 01:10:00.560
the model you pick, they're better
than Chad gpt is for a specific because

804
01:10:00.560 --> 01:10:03.920
they're the benefit of Alama is that
rather than getting a you know, billion,

805
01:10:04.000 --> 01:10:08.720
billion, billion data point model of
everything, you're getting models that are

806
01:10:08.720 --> 01:10:13.000
more fine tuned for specific things.
And then there are ways to lang chain

807
01:10:13.279 --> 01:10:16.720
to load stuff in. It automatically
does the history for you between the different

808
01:10:16.720 --> 01:10:21.840
requests and whatnot. And so I'm
just gonna put the web install dot dev

809
01:10:21.880 --> 01:10:27.239
slash Olama link there because that's where
the installer is. That makes it dead

810
01:10:27.279 --> 01:10:31.319
simple so you don't have to think
about it. And then uh yeah,

811
01:10:31.399 --> 01:10:35.920
I will just mention that I I
started using Home Assistant and I now have

812
01:10:36.000 --> 01:10:45.359
a thermostat that is connected to a
Google calendar like calendar, and I'm gonna

813
01:10:45.399 --> 01:10:48.640
I'm gonna put this in my wall
soon and I'll pick that next time.

814
01:10:49.760 --> 01:10:55.600
So that's all all right. I'm
gonna jump in here with a couple of

815
01:10:55.600 --> 01:11:00.399
things. Now, I always do
a board game or a card game.

816
01:11:00.239 --> 01:11:03.840
This one is one that my wife
got us for Christmas. I think technically

817
01:11:03.840 --> 01:11:10.600
Santa brought it for Christmas, but
my eight year old's not here to split

818
01:11:10.640 --> 01:11:15.159
hairs on that. And yeah,
so Disney Chronology, it's a really simple

819
01:11:15.199 --> 01:11:19.640
game. I think we play it
in like fifteen minutes twenty minutes, especially

820
01:11:19.680 --> 01:11:24.359
if my daughter goes before my wife, because my daughter can't get them right,

821
01:11:24.479 --> 01:11:28.960
so my wife steals them. So
essentially, you pull the card.

822
01:11:29.439 --> 01:11:33.600
It has a year, and it
has like Disney released steamboat Willie to blah

823
01:11:33.640 --> 01:11:36.840
blah blah blah, right, and
then the answers like nineteen twenty eight or

824
01:11:36.840 --> 01:11:40.199
whatever, right, and it has
the month of the year. And so

825
01:11:40.720 --> 01:11:43.600
you have three of those cards in
front of you and you pick either before

826
01:11:43.640 --> 01:11:46.039
all the cards in between too,
you know, any two of the cards

827
01:11:46.520 --> 01:11:49.359
that are next to each other,
or after your last card, right,

828
01:11:49.960 --> 01:11:55.720
And so yeah, if you don't
get it right, then the person next

829
01:11:56.039 --> 01:12:00.000
around the circle gets a chance to
you know, put it into their front

830
01:12:00.479 --> 01:12:03.000
and steal it. That's the whole
game. But if you're kind of a

831
01:12:03.079 --> 01:12:06.760
Disney nut like my wife is,
then it's kind of fun to see if

832
01:12:06.800 --> 01:12:12.039
you can guess them. And if
you've got the fourteen year old going before

833
01:12:12.079 --> 01:12:16.159
you, that can't get them right, then she wins because she steals them

834
01:12:16.159 --> 01:12:20.079
all. Anyway, it was fun, a lot of fun. So I'm

835
01:12:20.079 --> 01:12:25.239
gonna pick that it's a super simple
game, and yeah, it's it's fun

836
01:12:25.279 --> 01:12:30.319
because Disney, not because the game, because the game's idiotically simple. Another

837
01:12:30.399 --> 01:12:35.000
pick that I'm going to throw out
is, so a lot of you know

838
01:12:35.119 --> 01:12:39.439
that I spend a lot of my
time writing Ruby on Rails, and so

839
01:12:39.560 --> 01:12:45.399
I followed David Heinemeier Hanson or DHH
and he and Jason Freed are doing something

840
01:12:45.439 --> 01:12:49.359
a little bit different going forward in
kind of the SaaS space. I'm just

841
01:12:49.399 --> 01:12:54.680
going to put the link in for
once dot com. The idea is is,

842
01:12:54.720 --> 01:12:57.600
way back in the day, you
used to buy software and then you

843
01:12:57.640 --> 01:13:00.920
could install the software wherever you want
it and use it however you wanted.

844
01:13:01.479 --> 01:13:05.760
And the way you guys were talking
about super Agent was kind of the same

845
01:13:05.840 --> 01:13:10.119
idea in some ways, where it's, hey, you can take this code

846
01:13:10.119 --> 01:13:13.399
and you can run it wherever you
want and just own it and love it

847
01:13:13.439 --> 01:13:18.359
and you know whatever. And so
they're pushing forward this idea out there on

848
01:13:18.399 --> 01:13:23.399
the Internet where they deliver effectively what
would be SaaS apps, right so you

849
01:13:23.439 --> 01:13:28.680
can install as many instances of base
Camp. I don't know if they're doing

850
01:13:28.680 --> 01:13:31.479
it with base Camp, but as
many instances of whatever as you want.

851
01:13:32.000 --> 01:13:34.960
Because you now own the code,
you own the version of the code you

852
01:13:34.960 --> 01:13:41.479
bought. So I think that's cool
and I think it'll be interesting to see

853
01:13:42.880 --> 01:13:45.039
how much of a difference it makes
out there in the market. I think.

854
01:13:45.079 --> 01:13:48.600
I think it could be disruptive.
I think in other ways it may

855
01:13:48.640 --> 01:13:51.840
take a while for people to catch
on and go, oh, this is

856
01:13:51.840 --> 01:13:54.840
a one time payment and this is
a good deal. But yeah, I

857
01:13:55.239 --> 01:13:59.479
really love the idea, So I'm
going to pick that next thing. You

858
01:13:59.520 --> 01:14:03.840
know, people will want to purchase
and own music and movies. No,

859
01:14:05.079 --> 01:14:10.920
some of us still do. Yeah, yeah, yeah, I think if

860
01:14:10.920 --> 01:14:15.760
that one, people just have to
you have to unlearn what you've learned.

861
01:14:15.880 --> 01:14:20.000
Because the whole thing is people think
that that running a command to start a

862
01:14:20.039 --> 01:14:24.800
service on Linux is like something that
requires a four year degree. It's like

863
01:14:25.520 --> 01:14:29.600
it's a five minute thing. If
that, Yeah, I think the other

864
01:14:29.640 --> 01:14:31.920
thing that you have to run that
people are going to run into is they

865
01:14:31.920 --> 01:14:36.840
will have purchased movies and had them
on some streaming service that they you know,

866
01:14:38.000 --> 01:14:41.119
they got access to them on right, so you enter the code or

867
01:14:41.119 --> 01:14:45.720
whatever, and then it's not going
to be licensed to whatever service that is,

868
01:14:45.159 --> 01:14:48.359
and they'll lose access to it.
And then they're going to go what

869
01:14:48.439 --> 01:14:54.840
the heck? And then right,
and then they'll start looking at Okay,

870
01:14:55.079 --> 01:14:58.000
how do I own this again?
I think flex servers might take off for

871
01:14:58.119 --> 01:15:01.960
some of that. I've also scene
another and I'll see how I can find

872
01:15:02.000 --> 01:15:04.479
it because I've been wanting to play
with it. But I've seen a service

873
01:15:04.479 --> 01:15:09.159
out there that will attach to your
audible account and download all of your audio

874
01:15:09.159 --> 01:15:14.479
books in open audible open Audible.
It's like twenty bucks. It's the best

875
01:15:14.479 --> 01:15:16.840
thing ever. I love it.
I have to I have to cut in.

876
01:15:16.960 --> 01:15:23.720
I actually have to drop off guys. So off is. It was

877
01:15:23.840 --> 01:15:27.159
great speaking with you. I learned
a whole bunch best of black. Thank

878
01:15:27.199 --> 01:15:31.600
you, thank you, and and
it's an awesome thing that that you're doing.

879
01:15:31.640 --> 01:15:36.560
And I'm really loving the approach so
so again, and it was great

880
01:15:36.600 --> 01:15:43.600
having you on and by appreciate it. I'm I'm going to send an email

881
01:15:43.720 --> 01:15:46.960
to uh Ruby Roads real quick and
just let them know I'll be a few

882
01:15:46.960 --> 01:15:50.600
minutes late. But he's my,
what are your picks? Uh? So,

883
01:15:50.880 --> 01:15:58.000
first off TV show started rewatching Fargo. I don't know if you guys

884
01:15:58.000 --> 01:16:01.319
have watched it, but it's an
amazing show. It's like five seasons and

885
01:16:01.359 --> 01:16:05.239
they are not interconnected in any way, so you can jump into any season,

886
01:16:05.560 --> 01:16:10.479
pick the season you want and the
actors you like the most, and

887
01:16:10.520 --> 01:16:15.560
it's just amazing. So that's on
the show side, the fun side,

888
01:16:15.760 --> 01:16:20.479
the dead side. I have this
project, open source project that I would

889
01:16:20.520 --> 01:16:25.920
like to highlight, and you should
bring that guy on. His project is

890
01:16:26.000 --> 01:16:30.760
called outlines dot dev. He's a
French guy called Remy, and what he

891
01:16:30.800 --> 01:16:39.800
does is that he allows you to
create models that can answer in other formats

892
01:16:40.159 --> 01:16:45.319
than just text without having to write
a bunch of prompts and stuff. So

893
01:16:45.520 --> 01:16:51.479
it's a technique that you use to
you know, basically an extension you plug

894
01:16:51.520 --> 01:17:00.920
into your language model which allows you
to control its output, which is because

895
01:17:01.159 --> 01:17:06.319
it gives you ideas of what other
type of extensions you might want to plug

896
01:17:06.359 --> 01:17:12.119
in there that would do other things. So that's really interesting. It's state

897
01:17:12.199 --> 01:17:16.000
of the art stuff. Outlines dot
dev. I would I would pick that

898
01:17:16.079 --> 01:17:23.880
one. All right, cool,
all right, well let's go ahead and

899
01:17:23.920 --> 01:17:28.199
wrap it up. Thanks for having
East Mail, Thank you for having me

900
01:17:28.279 --> 01:17:31.960
guys, it was a pleasure.
My Twitter is My Twitter is home man

901
01:17:32.119 --> 01:17:40.640
P so h O m A n
P. Thanks bye,

