Skip to main content

Build Your Own AI Personal Assistant in TypeScript

3h 38m 48s
English
Paid

Unlock the true potential of large language models (LLMs) by building your own AI personal assistant in TypeScript. While universal chatbots provide some functionality, they often fall short by not utilizing personal data, failing to remember user preferences, and not adapting to specific workflows. This course will guide you in creating an AI system that's fully customized and under your control.

Course Overview

Develop a comprehensive understanding of system architecture in AI, which is more significant than the model itself. You'll learn data retrieval, memory management, context management, scripting agents, validation, and security.

What You Will Learn

During the 5-day intensive course, you'll gain hands-on experience to:

  • Implement intelligent search on your data using techniques like BM25, semantic search, RRF, and query rewriting.
  • Develop an advanced memory system that incorporates both semantic and episodic memory.
  • Enhance response quality and reliability through automatic evaluation mechanisms.
  • Ensure safe interaction with tools and APIs, including human-in-the-loop confirmations for added security.

Outcomes

By the end of this course, you'll have a fully functional and expandable personal AI assistant that:

  • Efficiently processes large volumes of data.
  • Adapts to your individual preferences and workflows.
  • Performs tasks safely and reliably.
  • Is model-independent, offering greater flexibility and control.

Skills You Will Gain

Beyond creating a personal assistant, this course will equip you with fundamental skills in modern AI engineering. These skills can be applied to developing custom LLM systems for a variety of applications, including professional work, business optimization, and personal projects.

About the Author: Matt Pocock

Matt Pocock thumbnail
Before creating Total TypeScript, I was a member of the XState core team and worked as a developer advocate at Vercel. I've worked with TypeScript as a lead fullstack dev, a library maintainer, and now as a full-time educator. I built Total TypeScript to make the secrets of open-source maintainers and industry experts available to everyone.

Watch Online 113 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 113 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: 001 Course Overview
All Course Lessons (113)
#Lesson TitleDurationAccess
1
001 Course Overview Demo
02:08
2
002 Skill Building Vs. Project
00:47
3
003 How to Do Skill Building Exercises
02:42
4
004 Project Repo Intro
03:56
5
005 How to Do The Project Exercises
04:43
6
006 Getting Model Keys
01:32
7
007 Introduction to Discord
01:47
8
008 What to Do Now
01:10
9
009 Retrieval Introduction
03:01
10
010 Overview of the BM25 Algorithm
03:48
11
011 Retrieval with BM25
01:20
12
012 Retrieval with BM25 solution
01:53
13
013 Replacing BM25 with Embeddings
04:13
14
014 Replacing BM25 with Embeddings solution
01:32
15
015 Rank Fusion
03:06
16
016 Query Rewriting
01:45
17
017 Query Rewriting solution
01:48
18
018 Building Your Own Dataset
01:42
19
019 Intro to Building a Search Algorithm
00:53
20
020 Adding BM25 Search
01:52
21
021 Caching Embeddings
02:23
22
022 Searching with Embeddings
01:08
23
023 Combining Results with Reciprocal Rank Fusion
01:29
24
024 Intro to Adding Search Tool to Agent
00:21
25
025 Search Tool
02:23
26
026 Context Engineering Search Tool
01:14
27
027 Chunking Intro
01:33
28
028 Fixed Size Chunks
02:53
29
029 Structural Chunking
02:06
30
030 Structural Chunking Solution
02:37
31
031 Retrieval with Chunks
01:43
32
032 Reranking
02:14
33
033 Reranking Solution
02:17
34
034 Chunking Emails Playground Intro
00:22
35
035 Abstracted Embeddings Cache
01:30
36
036 Adding the Text Splitter
01:21
37
037 Applying Chunking to Search Algorithms
02:09
38
038 Reranking and Chunking in Search Tool Intro
00:25
39
039 Adding the Reranker
01:44
40
040 Giving the Reranker More Context
02:21
41
041 Viewing Tool Calls in the Frontend
02:22
42
042 Custom Filter Tools Intro
00:45
43
043 Added Filter Emails Tool
03:29
44
044 Displayed Filter Tools in Frontend
00:41
45
045 Metadata First Retrieval Pattern Intro
00:48
46
046 Make Search Only Provide Metadata
04:13
47
047 Including Whole Threads
02:29
48
048 Basic Memory Setup
02:51
49
049 Basic Memory Setup Solution
02:10
50
050 Updating Previous Memories
01:52
51
051 Updating Previous Memories Solution
02:49
52
052 Memory as Tool Call
01:34
53
053 Memory as Tool Call Solution
03:05
54
054 Semantic Recall on Memories
02:26
55
055 Intro to Semantic Recall on Memories
00:42
56
056 Made Embedding Functions Generic
01:48
57
057 Added Memory Search Function
02:50
58
058 Added Memories to the Agent
01:25
59
059 Added Memory Extraction
02:05
60
060 Fixed System Prompt
01:29
61
061 Intro to Working Memory via Message Embeddings
01:01
62
062 Make Chat API Receive One Message
02:03
63
063 Added Search Messages Function
01:01
64
064 Implemented Working Memory
01:54
65
065 Intro to Episodic Memory from Conversations
01:11
66
066 Storing Chat Summaries
01:21
67
067 Added the reflectOnThat Function
01:58
68
068 Searching for Related Chats
00:49
69
069 Working Episodic Memory Setup
02:47
70
070 Evaluating Tool Call Agents
02:33
71
071 Evaluating Tool Call Agents Solution
01:37
72
072 Implementing a Deterministic Tool Call Scorer
01:31
73
073 Implementing a Deterministic Tool Call Scorer Solution
01:05
74
074 Using Evalite Each for A_B Testing
01:07
75
075 Using Evalite Each for A_B Testing Solution
01:52
76
076 Adversarial Inputs
01:09
77
077 Adversarial Inputs Solution
01:48
78
078 Creating a Clarifying Questions Tool
01:36
79
079 Creating a Clarifying Questions Tool Solution
01:45
80
080 Intro to Evaluating Memory Extraction
00:24
81
081 Make extractMemories Testable
01:02
82
082 Added createUIMessageFixture
01:24
83
083 Scaffold Eval
02:13
84
084 Added Dataset
01:59
85
085 Added answerCorrectness Scorer
04:20
86
086 Moved to answerSimilarity
01:56
87
087 Intro to Evaluating End to End Agent
01:04
88
088 Moved Agent Into Its Own File
01:33
89
089 Scaffolding the Eval
02:08
90
090 Customized Evalite's UI
01:13
91
091 Added Answer Correctness Scorer
01:43
92
092 Adding Multi-Hop and Filtering Queries
02:34
93
093 Human in the Loop Intro
01:11
94
094 Initiating Human in the Loop Requests
02:12
95
095 Initiating Human in the Loop Requests Solution
00:51
96
096 Approving Human in the Loop Requests
03:33
97
097 Converting Custom Data Parts For The LLM
01:27
98
098 Converting Custom Data Parts For The LLM Solution
01:01
99
099 Processing Human in the Loop Requests
02:53
100
100 Processing Human in the Loop Requests Solution
01:29
101
101 Executing the Human in the Loop Requests
01:57
102
102 Executing the Human in the Loop Requests Solution
02:28
103
103 Intro to Building the Destructive Tools
01:45
104
104 Hooked Up Zapier MCP
02:21
105
105 Removed Unwanted Tools
02:04
106
106 Added Local Definitions
02:16
107
107 Intro to Build the Human in the Loop Harness
00:15
108
108 HITL on the Backend
04:21
109
109 HITL on the Frontend
02:53
110
110 Intro to Filtering Tool Groups on the Frontend
02:15
111
111 Added Types and Helper Functions
02:19
112
112 Implemented App Tagging on Frontend
01:52
113
113 Implemented App Tagging on Backend
02:00
Unlock unlimited learning

Get instant access to all 112 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription