WEBVTT

1
00:00:00.000 --> 00:00:06.000
Hi, and welcome to this short video on what the Agent Framework Toolkit is.

2
00:00:06.000 --> 00:00:09.000
Agent Framework Toolkit is something I, from time to time,

3
00:00:09.000 --> 00:00:13.000
mention in my various other videos,

4
00:00:13.000 --> 00:00:16.000
and I have made some dedicated videos about it before,

5
00:00:16.000 --> 00:00:22.000
but many people don't know what it is, so a small introduction here.

6
00:00:22.000 --> 00:00:25.000
So, Agent Framework Toolkit is, as you see on the screen,

7
00:00:25.000 --> 00:00:29.500
a set of three NuGet packages that sits on top of Agent Framework.

8
00:00:29.500 --> 00:00:32.500
and adds various quality-of-life features.

9
00:00:32.500 --> 00:00:38.500
So, the three main purposes is easier agent creation, easier tool creation,

10
00:00:38.500 --> 00:00:41.500
and out-of-the-box tools.

11
00:00:41.500 --> 00:00:46.500
This is for C Sharp only, so not for Python.

12
00:00:46.500 --> 00:00:51.500
And the best way to explain what it is, is by giving a few examples.

13
00:00:51.500 --> 00:00:55.500
So the first one is these easier agents,

14
00:00:55.500 --> 00:00:58.500
which is done using opinionated factories

15
00:00:58.500 --> 00:01:03.500
against the various providers, OpenAI, Google, Anthropic, and so on.

16
00:01:03.500 --> 00:01:08.500
And, as an example, if we want to make an agent

17
00:01:08.500 --> 00:01:12.500
for plain vanilla Agent Framework

18
00:01:12.500 --> 00:01:16.500
using Azure OpenAI with a GPT-5 Mini,

19
00:01:16.500 --> 00:01:19.500
with low reasoning effort and tool calling middleware,

20
00:01:19.500 --> 00:01:22.500
we would need to write something like this.

21
00:01:23.000 --> 00:01:27.000
We would need to make our client, we would need to make our agent,

22
00:01:27.000 --> 00:01:30.500
and inside our agent we need to set some extra things

23
00:01:30.500 --> 00:01:33.000
in order to set the low reasoning effort.

24
00:01:33.000 --> 00:01:35.500
This is what's called breaking glass,

25
00:01:35.500 --> 00:01:42.500
because it's kind of a very, very low-level overriding object here.

26
00:01:45.500 --> 00:01:47.500
On top of that, in order to set our things,

27
00:01:47.500 --> 00:01:50.500
we need to put our tools inside the chat options

28
00:01:50.500 --> 00:01:55.500
when we want to do it here, so we can't place it like normal.

29
00:01:55.500 --> 00:01:59.500
And we need to use, as builder, use tool calling middleware.build

30
00:01:59.500 --> 00:02:03.500
in order to actually get the tool calling in there as well,

31
00:02:03.500 --> 00:02:05.500
because that's not set on here.

32
00:02:06.500 --> 00:02:11.500
And the tool calling down here is the regular tool call,

33
00:02:11.500 --> 00:02:13.500
in which case, in this case,

34
00:02:13.500 --> 00:02:16.500
we're just printing out what tools we're calling.

35
00:02:17.500 --> 00:02:23.500
So this is the experience using the vanilla system.

36
00:02:23.500 --> 00:02:27.500
If you add the Agent Framework Toolkit on top,

37
00:02:27.500 --> 00:02:30.500
you would be able to do what you see on the screen

38
00:02:30.500 --> 00:02:32.500
with this code instead.

39
00:02:33.500 --> 00:02:39.500
So you would end up making an Azure OpenAI factory for agents,

40
00:02:39.500 --> 00:02:43.500
and you would make an Azure OpenAI agent.

41
00:02:43.500 --> 00:02:45.500
Had it been Google, it would be a Google factory

42
00:02:45.500 --> 00:02:47.500
with a Google agent and so on.

43
00:02:48.500 --> 00:02:54.500
And what I have done is I have made the configuration

44
00:02:54.500 --> 00:02:56.500
of each agent a flat structure.

45
00:02:56.500 --> 00:03:00.500
There's nothing multi-level in any way.

46
00:03:00.500 --> 00:03:03.500
Everything has been put down, so it's very, very easy to do.

47
00:03:03.500 --> 00:03:08.500
So, for example, reasoning effort is directly on some agent options.

48
00:03:08.500 --> 00:03:10.500
Tools is directly there,

49
00:03:10.500 --> 00:03:13.500
and a special raw tool called Details is there

50
00:03:13.500 --> 00:03:18.500
to take care of middleware in just a read manner.

51
00:03:20.500 --> 00:03:27.500
So much less code and much easier code to understand

52
00:03:27.500 --> 00:03:29.500
because it's just a flat model.

53
00:03:33.500 --> 00:03:37.500
And this is supported by all the major providers.

54
00:03:37.500 --> 00:03:40.500
So, for example, here is Antropics Cloud.

55
00:03:40.500 --> 00:03:42.500
We can do exactly the same.

56
00:03:42.500 --> 00:03:45.500
It's just called an Antropic Agent Factory

57
00:03:45.500 --> 00:03:48.500
with an Antropic Agent coming back.

58
00:03:48.500 --> 00:03:52.500
And in here, we have specific Antropic Agent options

59
00:03:52.500 --> 00:03:58.500
because in Antropic, the max output tokens is a mandatory field.

60
00:03:58.500 --> 00:04:01.500
So this one ensures that you remember to set it.

61
00:04:03.500 --> 00:04:06.500
And it, of course, supports their breaking glass features

62
00:04:06.500 --> 00:04:09.500
like budget tokens and so on.

63
00:04:10.500 --> 00:04:14.500
In the same manner, Google, you just make a Google agent

64
00:04:14.500 --> 00:04:16.500
or an AI agent, as you can see here.

65
00:04:16.500 --> 00:04:18.500
More about that later.

66
00:04:18.500 --> 00:04:22.500
And you can set, for example, their thinking level.

67
00:04:22.500 --> 00:04:26.500
And down here, you can see all the different providers

68
00:04:26.500 --> 00:04:28.500
that I support at the moment.

69
00:04:28.500 --> 00:04:33.500
So it should be fairly simple, and if you need one more provider,

70
00:04:33.500 --> 00:04:36.500
it's very easy to extend these.

71
00:04:38.500 --> 00:04:41.500
But you might think, okay, if we're going opinionated,

72
00:04:41.500 --> 00:04:46.500
it might not be able to do everything that Agent Framework can do.

73
00:04:46.500 --> 00:04:48.500
And that's not the case.

74
00:04:48.500 --> 00:04:51.500
There's no limitations despite being opinionated.

75
00:04:51.500 --> 00:04:55.500
So on the connection side, we can still use credentials

76
00:04:55.500 --> 00:04:57.500
instead of API keys.

77
00:04:57.500 --> 00:05:00.500
We can still go to responses API.

78
00:05:00.500 --> 00:05:02.500
We can still set network timeouts.

79
00:05:02.500 --> 00:05:05.500
Or if anything special you do,

80
00:05:05.500 --> 00:05:11.500
there's always a hook-in to the additional underlying options.

81
00:05:12.500 --> 00:05:15.500
And on the agent side, you don't need to make it a Google agent

82
00:05:15.500 --> 00:05:17.500
or an OpenAI agent.

83
00:05:18.500 --> 00:05:21.500
It's just a wrapper around AI agents.

84
00:05:21.500 --> 00:05:24.500
So if you need all the agents to be in AI agents

85
00:05:24.500 --> 00:05:27.500
to pass around to the rest of Agent Framework,

86
00:05:27.500 --> 00:05:29.500
you can do that.

87
00:05:29.500 --> 00:05:31.500
And it supports all the options.

88
00:05:31.500 --> 00:05:34.500
All the common options like instructions, models, tools,

89
00:05:34.500 --> 00:05:38.500
less options like ID, max description, temperature,

90
00:05:38.500 --> 00:05:41.500
all the different providers and factories.

91
00:05:41.500 --> 00:05:44.500
So AI context providers can be set,

92
00:05:44.500 --> 00:05:46.500
the chat history can be set,

93
00:05:46.500 --> 00:05:50.500
client factory and logging factory,

94
00:05:50.500 --> 00:05:52.500
and the services as well.

95
00:05:53.500 --> 00:05:55.500
We can support all the middleware,

96
00:05:55.500 --> 00:06:00.500
but it's been put into being properties on the options

97
00:06:00.500 --> 00:06:03.500
instead of down as builder,

98
00:06:03.500 --> 00:06:05.500
so it's easier to work with.

99
00:06:06.500 --> 00:06:09.500
And then there's, of course, the OpenAI-specific features

100
00:06:09.500 --> 00:06:13.500
like client type, reasoning effort, reasoning summary,

101
00:06:13.500 --> 00:06:15.500
service tier, and so on.

102
00:06:16.500 --> 00:06:19.500
And finally, I put in a bunch of debugging features,

103
00:06:19.500 --> 00:06:22.500
so you can, with one line here,

104
00:06:22.500 --> 00:06:29.500
add the raw HTTP tool client,

105
00:06:29.500 --> 00:06:32.500
so you can begin to see the raw JSONs being sent

106
00:06:32.500 --> 00:06:35.500
to the LLM and from the LLM.

107
00:06:36.500 --> 00:06:39.500
And if, again, there's anything I'm missing,

108
00:06:40.500 --> 00:06:43.500
there's an option to provide extra things

109
00:06:43.500 --> 00:06:45.500
for chat client agent options.

110
00:06:46.500 --> 00:06:49.500
So, again, no limitations at all.

111
00:06:52.500 --> 00:06:56.500
Similarly, we also have our tool factory,

112
00:06:56.500 --> 00:06:59.500
which makes tools easier to create.

113
00:06:59.500 --> 00:07:03.500
So, this reintroduces something that Semantic Kernel had

114
00:07:03.500 --> 00:07:07.500
in that we can add attributes onto our classes

115
00:07:07.500 --> 00:07:13.500
and the various methods we want with an AI tool attribute,

116
00:07:13.500 --> 00:07:15.500
where we give the tool name and the description.

117
00:07:16.500 --> 00:07:20.500
And if we do that, we can simply use this AI tools factory

118
00:07:20.500 --> 00:07:24.500
to, say, get tools from the raw class

119
00:07:25.500 --> 00:07:27.500
or the instance if you want to.

120
00:07:28.500 --> 00:07:30.500
You can, of course, do this with normal reflection.

121
00:07:30.500 --> 00:07:33.500
I've just done the reflection part for you.

122
00:07:36.500 --> 00:07:39.500
Similar, it has hooks into MCP servers,

123
00:07:39.500 --> 00:07:43.500
so the factory can just turn

124
00:07:43.500 --> 00:07:50.500
an MCP remote from just a URL into tools.

125
00:07:50.500 --> 00:07:55.500
You can, of course, specify header properties and so on if need be.

126
00:07:56.500 --> 00:08:00.500
And then there's local MCP servers that is also supported.

127
00:08:01.500 --> 00:08:05.500
Finally, I have my own implementation of agent skills

128
00:08:05.500 --> 00:08:09.500
that came a little before agent framework put it in.

129
00:08:10.500 --> 00:08:12.500
And it has its variety.

130
00:08:12.500 --> 00:08:17.500
It turns it into tools instead of using the AI context provider.

131
00:08:20.500 --> 00:08:25.500
Besides being able to take your own tools and define them easily,

132
00:08:26.500 --> 00:08:30.500
I also put in a set of common out-of-the-box tools.

133
00:08:30.500 --> 00:08:34.500
So, there's time tools, so you can tell your agent

134
00:08:34.500 --> 00:08:37.500
exactly what the time of day it is,

135
00:08:37.500 --> 00:08:40.500
either in UTC or in local time.

136
00:08:41.500 --> 00:08:44.500
There's integration into some weather tools

137
00:08:44.500 --> 00:08:47.500
for real open weather map.

138
00:08:47.500 --> 00:08:50.500
You just need a read API key from them,

139
00:08:50.500 --> 00:08:54.500
and then you have full access to weather around the world.

140
00:08:55.500 --> 00:08:58.500
There's file system tools, so you can create

141
00:08:58.500 --> 00:09:02.500
and get files and folders on the system.

142
00:09:02.500 --> 00:09:06.500
And there's guardrails built into them,

143
00:09:06.500 --> 00:09:09.500
so you can set what exactly they are allowed to use,

144
00:09:09.500 --> 00:09:11.500
of which folders and so on.

145
00:09:11.500 --> 00:09:14.500
And by the way, these tools are completely out of the box,

146
00:09:15.500 --> 00:09:18.500
but you need to define if you want to use them.

147
00:09:18.500 --> 00:09:21.500
It's not like if you use agent framework tool kit

148
00:09:21.500 --> 00:09:24.500
that you suddenly get full access to your file systems.

149
00:09:24.500 --> 00:09:29.500
That's on your definition of if you want to use them or not.

150
00:09:30.500 --> 00:09:34.500
There's website tools for getting content off a page,

151
00:09:34.500 --> 00:09:36.500
screen-scraping.

152
00:09:36.500 --> 00:09:40.500
There's HTTP client tools, so you can actually

153
00:09:40.500 --> 00:09:43.500
call APIs and stuff like that,

154
00:09:43.500 --> 00:09:47.500
if you desire to do so, and it can, again,

155
00:09:47.500 --> 00:09:52.500
have guardrails in on what different endpoints

156
00:09:52.500 --> 00:09:54.500
you are allowed to use.

157
00:09:54.500 --> 00:09:57.500
And finally, there's a little email tool

158
00:09:57.500 --> 00:10:00.500
where you can send SMTP emails.

159
00:10:00.500 --> 00:10:04.500
So just tools that you sometimes need

160
00:10:04.500 --> 00:10:06.500
and don't want to write yourself.

161
00:10:06.500 --> 00:10:08.500
So they have been written for you

162
00:10:08.500 --> 00:10:12.500
with lots of configuration options into every single tool.

163
00:10:15.500 --> 00:10:19.500
So that's everything. There is more.

164
00:10:19.500 --> 00:10:22.500
There's various quality-of-life extension methods

165
00:10:22.500 --> 00:10:28.500
and bedding factories, but we don't want to go into this.

166
00:10:28.500 --> 00:10:32.500
Instead, I want you to go in and check out the link.

167
00:10:32.500 --> 00:10:36.500
It goes to the repo, which has a bunch of readmes

168
00:10:36.500 --> 00:10:40.500
about what every feature works and a wiki about it,

169
00:10:40.500 --> 00:10:43.500
and, of course, access to the NuGet packages

170
00:10:43.500 --> 00:10:46.500
that you can get for free and just put on top

171
00:10:46.500 --> 00:10:48.500
with no limitations.

172
00:10:48.500 --> 00:10:50.500
So that's everything.

173
00:10:50.500 --> 00:10:52.500
See you in the next one.

