From 3047b5319b1ddf951a84d83de0b4cd599ff6f3c7 Mon Sep 17 00:00:00 2001 From: DexterStorey <36115192+DexterStorey@users.noreply.github.com> Date: Sat, 14 Oct 2023 04:52:24 -0400 Subject: [PATCH] feat: cal.ai v1.2.0 (#11868) * bump nextjs version in ai * lowercase username and email * onboarding email * direct user to install app if not installed * multiple suggested times for link flow * summary of context prompt engineering * specify the @username nuance and discourage Ids * v1.2.0 * Update README * Change title * simplify and improve booking link flow * add build:ai to package.json * better onboarding copy * onboarding touches * remove console logs and temp hacks * remove env vars in app store and token in AI app * invited user id should be string --------- Co-authored-by: tedspare --- apps/ai/.env.example | 3 + apps/ai/README.md | 46 +++++---- apps/ai/package.json | 4 +- apps/ai/src/app/api/onboard/route.ts | 44 ++++++++ apps/ai/src/app/api/receive/route.ts | 2 +- apps/ai/src/env.mjs | 2 + apps/ai/src/public/architecture.png | Bin 0 -> 127604 bytes apps/ai/src/tools/createBooking.ts | 2 +- apps/ai/src/tools/sendBookingEmail.ts | 124 +++++++++++++++++++++++ apps/ai/src/tools/sendBookingLink.ts | 81 --------------- apps/ai/src/utils/agent.ts | 6 +- apps/ai/src/utils/extractUsers.ts | 8 +- package.json | 1 + packages/app-store/cal-ai/api/_getAdd.ts | 13 +++ turbo.json | 1 + 15 files changed, 231 insertions(+), 106 deletions(-) create mode 100644 apps/ai/src/app/api/onboard/route.ts create mode 100644 apps/ai/src/public/architecture.png create mode 100644 apps/ai/src/tools/sendBookingEmail.ts delete mode 100644 apps/ai/src/tools/sendBookingLink.ts diff --git a/apps/ai/.env.example b/apps/ai/.env.example index 2aad722973..e6effa0a1e 100644 --- a/apps/ai/.env.example +++ b/apps/ai/.env.example @@ -6,6 +6,9 @@ FRONTEND_URL=http://localhost:3000 APP_ID=cal-ai APP_URL=http://localhost:3000/apps/cal-ai +# This is for the onboard route. Which domain should we send emails from? +SENDER_DOMAIN=cal.ai + # Used to verify requests from sendgrid. You can generate a new one with: `openssl rand -hex 32` PARSE_KEY= diff --git a/apps/ai/README.md b/apps/ai/README.md index 95316cd356..584d1732b6 100644 --- a/apps/ai/README.md +++ b/apps/ai/README.md @@ -1,12 +1,12 @@ -# Cal.com Email Assistant +# Cal.ai -Welcome to the first stage of Cal.ai! +Welcome to [Cal.ai](https://cal.ai)! This app lets you chat with your calendar via email: - Turn informal emails into bookings eg. forward "wanna meet tmrw at 2pm?" -- List and rearrange your bookings eg. "Cancel my next meeting" -- Answer basic questions about your busiest times eg. "How does my Tuesday look?" +- List and rearrange your bookings eg. "clear my afternoon" +- Answer basic questions about your busiest times eg. "how does my Tuesday look?" The core logic is contained in [agent/route.ts](/apps/ai/src/app/api/agent/route.ts). Here, a [LangChain Agent Executor](https://docs.langchain.com/docs/components/agents/agent-executor) is tasked with following your instructions. Given your last-known timezone, working hours, and busy times, it attempts to CRUD your bookings. @@ -14,7 +14,7 @@ _The AI agent can only choose from a set of tools, without ever seeing your API Emails are cleaned and routed in [receive/route.ts](/apps/ai/src/app/api/receive/route.ts) using [MailParser](https://nodemailer.com/extras/mailparser/). -Incoming emails are routed by email address. Addresses are verified by [DKIM record](https://support.google.com/a/answer/174124?hl=en), making it hard to spoof them. +Incoming emails are routed by email address. Addresses are verified by [DKIM record](https://support.google.com/a/answer/174124?hl=en), making them hard to spoof. ## Getting Started @@ -22,27 +22,39 @@ Incoming emails are routed by email address. Addresses are verified by [DKIM rec If you haven't yet, please run the [root setup](/README.md) steps. -Before running the app, please see [env.mjs](./src/env.mjs) for all required environment variables. You'll need: +Before running the app, please see [env.mjs](./src/env.mjs) for all required environment variables. Run `cp .env.example .env` in this folder to get started. You'll need: - An [OpenAI API key](https://platform.openai.com/account/api-keys) with access to GPT-4 - A [SendGrid API key](https://app.sendgrid.com/settings/api_keys) -- A default sender email (for example, `ai@cal.dev`) -- The Cal.ai's app ID and URL (see [add.ts](/packages/app-store/cal-ai/api/index.ts)) +- A default sender email (for example, `me@dev.example.com`) +- The Cal.ai app's ID and URL (see [add.ts](/packages/app-store/cal-ai/api/index.ts)) +- A unique value for `PARSE_KEY` with `openssl rand -hex 32` To stand up the API and AI apps simultaneously, simply run `yarn dev:ai`. +### Agent Architecture + +The scheduling agent in [agent/route.ts](/apps/ai/src/app/api/agent/route.ts) calls an LLM (in this case, GPT-4) in a loop to accomplish a multi-step task. We use an [OpenAI Functions agent](https://js.langchain.com/docs/modules/agents/agent_types/openai_functions_agent), which is fine-tuned to output text suited for passing to tools. + +Tools (eg. [`createBooking`](/apps/ai/src/tools/createBooking.ts)) are simply JavaScript methods wrapped by Zod schemas, telling the agent what format to output. + +Here is the full architecture: + +![Cal.ai architecture](/apps/ai/src/public/architecture.png) + ### Email Router To expose the AI app, run `ngrok http 3000` (or the AI app's port number) in a new terminal. You may need to install [nGrok](https://ngrok.com/). -To forward incoming emails to the Node.js server, one option is to use [SendGrid's Inbound Parse Webhook](https://docs.sendgrid.com/for-developers/parsing-email/setting-up-the-inbound-parse-webhook). +To forward incoming emails to the serverless function at `/agent`, we use [SendGrid's Inbound Parse](https://docs.sendgrid.com/for-developers/parsing-email/setting-up-the-inbound-parse-webhook). -1. [Sign up for an account](https://signup.sendgrid.com/) -2. Go to Settings > [Inbound Parse](https://app.sendgrid.com/settings/parse) > Add Host & URL. -3. For subdomain, use `..com` for now, where `sub` can be any subdomain but `domain.com` will need to be verified via MX records in your environment variables, eg. on [Vercel](https://vercel.com/guides/how-to-add-vercel-environment-variables). -4. Use the nGrok URL from above as the **Destination URL**. -5. Activate "POST the raw, full MIME message". -6. Send an email to `@ai.example.com`. You should see a ping on the nGrok listener and Node.js server. -7. Adjust the logic in [receive/route.ts](/apps/ai/src/app/api/receive/route.ts), save to hot-reload, and send another email to test the behaviour. +1. Ensure you have a [SendGrid account](https://signup.sendgrid.com/) +2. Ensure you have an authenticated domain. Go to Settings > Sender Authentication > Authenticate. For DNS host, select `I'm not sure`. Click Next and add your domain, eg. `example.com`. Choose Manual Setup. You'll be given three CNAME records to add to your DNS settings, eg. in [Vercel Domains](https://vercel.com/dashboard/domains). After adding those records, click Verify. To troubleshoot, see the [full instructions](https://docs.sendgrid.com/ui/account-and-settings/how-to-set-up-domain-authentication). +3. Authorize your domain for email with MX records: one with name `[your domain].com` and value `mx.sendgrid.net.`, and another with name `bounces.[your domain].com` and value `feedback-smtp.us-east-1.amazonses.com`, both with priority `10` if prompted. +4. Go to Settings > [Inbound Parse](https://app.sendgrid.com/settings/parse) > Add Host & URL. Choose your authenticated domain. +5. In the Destination URL field, use the nGrok URL from above along with the path, `/api/receive`, and one param, `parseKey`, which lives in [this app's .env](/apps/ai/.env.example) under `PARSE_KEY`. The full URL should look like `https://abc.ngrok.io/api/receive?parseKey=ABC-123`. +6. Activate "POST the raw, full MIME message". +7. Send an email to `[anyUsername]@example.com`. You should see a ping on the nGrok listener and server. +8. Adjust the logic in [receive/route.ts](/apps/ai/src/app/api/receive/route.ts), save to hot-reload, and send another email to test the behaviour. -Please feel free to improve any part of this architecture. +Please feel free to improve any part of this architecture! diff --git a/apps/ai/package.json b/apps/ai/package.json index 8eaf474ed1..6f5b510ab9 100644 --- a/apps/ai/package.json +++ b/apps/ai/package.json @@ -1,6 +1,6 @@ { "name": "@calcom/ai", - "version": "1.1.1", + "version": "1.2.0", "private": true, "author": "Cal.com Inc.", "dependencies": { @@ -8,7 +8,7 @@ "@t3-oss/env-nextjs": "^0.6.1", "langchain": "^0.0.131", "mailparser": "^3.6.5", - "next": "^13.4.6", + "next": "^13.4.7", "supports-color": "8.1.1", "zod": "^3.22.2" }, diff --git a/apps/ai/src/app/api/onboard/route.ts b/apps/ai/src/app/api/onboard/route.ts new file mode 100644 index 0000000000..e4eaaef8cf --- /dev/null +++ b/apps/ai/src/app/api/onboard/route.ts @@ -0,0 +1,44 @@ +import type { NextRequest } from "next/server"; + +import prisma from "@calcom/prisma"; + +import { env } from "../../../env.mjs"; +import sendEmail from "../../../utils/sendEmail"; + +export const POST = async (request: NextRequest) => { + const { userId } = await request.json(); + + const user = await prisma.user.findUnique({ + select: { + email: true, + name: true, + username: true, + }, + where: { + id: userId, + }, + }); + + if (!user) { + return new Response("User not found", { status: 404 }); + } + + await sendEmail({ + subject: "Welcome to Cal AI", + to: user.email, + from: `${user.username}@${env.SENDER_DOMAIN}`, + text: `Hi ${ + user.name || `@${user.username}` + },\n\nI'm Cal AI, your personal booking assistant! I'll be here, 24/7 to help manage your busy schedule and find times to meet with the people you care about.\n\nHere are some things you can ask me:\n\n- "Book a meeting with @someone" (The @ symbol lets you tag Cal.com users)\n- "What meetings do I have today?" (I'll show you your schedule)\n- "Find a time for coffee with someone@gmail.com" (I'll intro and send them some good times)\n\nI'm still learning, so if you have any feedback, please tweet it to @calcom!\n\nRemember, you can always reach me here, at ${ + user.username + }@${ + env.SENDER_DOMAIN + }.\n\nLooking forward to working together (:\n\n- Cal AI, Your personal booking assistant`, + html: `Hi ${ + user.name || `@${user.username}` + },

I'm Cal AI, your personal booking assistant! I'll be here, 24/7 to help manage your busy schedule and find times to meet with the people you care about.

Here are some things you can ask me:

- "Book a meeting with @someone" (The @ symbol lets you tag Cal.com users)
- "What meetings do I have today?" (I'll show you your schedule)
- "Find a time for coffee with someone@gmail.com" (I'll intro and send them some good times)

I'm still learning, so if you have any feedback, please send it to @calcom on X!

Remember, you can always reach me here, at ${ + user.username + }@${env.SENDER_DOMAIN}.

Looking forward to working together (:

- Cal AI`, + }); + return new Response("OK", { status: 200 }); +}; diff --git a/apps/ai/src/app/api/receive/route.ts b/apps/ai/src/app/api/receive/route.ts index a988beb51b..cf6ec9da71 100644 --- a/apps/ai/src/app/api/receive/route.ts +++ b/apps/ai/src/app/api/receive/route.ts @@ -59,7 +59,7 @@ export const POST = async (request: NextRequest) => { }, }, }, - where: { email: envelope.from, credentials: { some: { appId: env.APP_ID } } }, + where: { email: envelope.from }, }); // User is not a cal.com user or is using an unverified email. diff --git a/apps/ai/src/env.mjs b/apps/ai/src/env.mjs index 567bb4c19d..2596a26643 100644 --- a/apps/ai/src/env.mjs +++ b/apps/ai/src/env.mjs @@ -20,6 +20,7 @@ export const env = createEnv({ FRONTEND_URL: process.env.FRONTEND_URL, APP_ID: process.env.APP_ID, APP_URL: process.env.APP_URL, + SENDER_DOMAIN: process.env.SENDER_DOMAIN, PARSE_KEY: process.env.PARSE_KEY, NODE_ENV: process.env.NODE_ENV, OPENAI_API_KEY: process.env.OPENAI_API_KEY, @@ -36,6 +37,7 @@ export const env = createEnv({ FRONTEND_URL: z.string().url(), APP_ID: z.string().min(1), APP_URL: z.string().url(), + SENDER_DOMAIN: z.string().min(1), PARSE_KEY: z.string().min(1), NODE_ENV: z.enum(["development", "test", "production"]), OPENAI_API_KEY: z.string().min(1), diff --git a/apps/ai/src/public/architecture.png b/apps/ai/src/public/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..52eedfe6f56a3cd0e3c8067d225b11c8cd7ad8ed GIT binary patch literal 127604 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%0DnR8{I{t+lQXfgfkJHr9fdqLMji61ai7 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 z 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 z { + // const url = `${env.FRONTEND_URL}/${user.username}/${eventTypeSlug}?date=${date}`; + const timeUrls = slots?.map(({ time, text }) => { + return { + url: `${env.FRONTEND_URL}/${user.username}/${eventTypeSlug}?slot=${time}`, + text, + }; + }); + + const dateUrl = { + url: `${env.FRONTEND_URL}/${user.username}/${eventTypeSlug}?date=${date.date}`, + text: date.text, + }; + + await sendEmail({ + subject, + to, + cc: user.email, + from: agentEmail, + text: message + .split("[[[Slots]]]") + .join(timeUrls?.map(({ url, text }) => `${text}: ${url}`).join("\n")) + .split("[[[Link]]]") + .join(`${dateUrl.text}: ${dateUrl.url}`), + html: message + .split("\n") + .join("
") + .split("[[[Slots]]]") + .join(timeUrls?.map(({ url, text }) => `${text}`).join("
")) + .split("[[[Link]]]") + .join(`${dateUrl.text}`), + }); + + return "Booking link sent"; +}; + +const sendBookingEmailTool = (apiKey: string, user: User, users: UserList, agentEmail: string) => { + return new DynamicStructuredTool({ + description: + "Send a booking link via email. Useful for scheduling with non cal users. Be confident, suggesting a good date/time with a fallback to a link to select a date/time.", + func: async ({ message, subject, to, eventTypeSlug, slots, date }) => { + return JSON.stringify( + await sendBookingEmail({ + apiKey, + user, + users, + agentEmail, + subject, + to, + message, + eventTypeSlug, + slots, + date, + }) + ); + }, + name: "sendBookingEmail", + + schema: z.object({ + message: z + .string() + .describe( + "A polite and professional email with an intro and signature at the end. Specify you are the AI booking assistant of the primary user. Use [[[Slots]]] and a fallback [[[Link]]] to inject good times and 'see all times' into messages" + ), + subject: z.string(), + to: z + .string() + .describe("email address to send the booking link to. Primary user is automatically CC'd"), + eventTypeSlug: z.string().describe("the slug of the event type to book"), + slots: z + .array( + z.object({ + time: z.string().describe("YYYY-MM-DDTHH:mm in UTC"), + text: z.string().describe("minimum readable label. Ex. 4pm."), + }) + ) + .optional() + .describe("Time slots the external user can click"), + date: z + .object({ + date: z.string().describe("YYYY-MM-DD"), + text: z.string().describe('"See all times" or similar'), + }) + .describe( + "A booking link that allows the external user to select a date / time. Should be a fallback to time slots" + ), + }), + }); +}; + +export default sendBookingEmailTool; diff --git a/apps/ai/src/tools/sendBookingLink.ts b/apps/ai/src/tools/sendBookingLink.ts deleted file mode 100644 index e23df6e52d..0000000000 --- a/apps/ai/src/tools/sendBookingLink.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { DynamicStructuredTool } from "langchain/tools"; -import { z } from "zod"; - -import { env } from "~/src/env.mjs"; -import type { User, UserList } from "~/src/types/user"; -import sendEmail from "~/src/utils/sendEmail"; - -export const sendBookingLink = async ({ - user, - agentEmail, - subject, - to, - message, - eventTypeSlug, - date, -}: { - apiKey: string; - user: User; - users: UserList; - agentEmail: string; - subject: string; - to: string[]; - message: string; - eventTypeSlug: string; - date: string; -}) => { - const url = `${env.FRONTEND_URL}/${user.username}/${eventTypeSlug}?date=${date}`; - - await sendEmail({ - subject, - to, - cc: user.email, - from: agentEmail, - text: message.split("[[[Booking Link]]]").join(url), - html: message - .split("\n") - .join("
") - .split("[[[Booking Link]]]") - .join(`Booking Link`), - }); - - return "Booking link sent"; -}; - -const sendBookingLinkTool = (apiKey: string, user: User, users: UserList, agentEmail: string) => { - return new DynamicStructuredTool({ - description: "Send a booking link via email. Useful for scheduling with non cal users.", - func: async ({ message, subject, to, eventTypeSlug, date }) => { - return JSON.stringify( - await sendBookingLink({ - apiKey, - user, - users, - agentEmail, - subject, - to, - message, - eventTypeSlug, - date, - }) - ); - }, - name: "sendBookingLink", - - schema: z.object({ - message: z - .string() - .describe( - "Make sure to nicely format the message and introduce yourself as the primary user's booking assistant. Make sure to include a spot for the link using: [[[Booking Link]]]" - ), - subject: z.string(), - to: z - .array(z.string()) - .describe("array of emails to send the booking link to. Primary user is automatically CC'd"), - eventTypeSlug: z.string().describe("the slug of the event type to book"), - date: z.string().describe("the date (yyyy-mm-dd) to suggest for the booking"), - }), - }); -}; - -export default sendBookingLinkTool; diff --git a/apps/ai/src/utils/agent.ts b/apps/ai/src/utils/agent.ts index 1ef3319198..844b4a7747 100644 --- a/apps/ai/src/utils/agent.ts +++ b/apps/ai/src/utils/agent.ts @@ -6,7 +6,7 @@ import createBookingIfAvailable from "../tools/createBooking"; import deleteBooking from "../tools/deleteBooking"; import getAvailability from "../tools/getAvailability"; import getBookings from "../tools/getBookings"; -import sendBookingLink from "../tools/sendBookingLink"; +import sendBookingEmail from "../tools/sendBookingEmail"; import updateBooking from "../tools/updateBooking"; import type { EventType } from "../types/eventType"; import type { User, UserList } from "../types/user"; @@ -35,7 +35,7 @@ const agent = async ( createBookingIfAvailable(apiKey, userId, users), updateBooking(apiKey, userId), deleteBooking(apiKey), - sendBookingLink(apiKey, user, users, agentEmail), + sendBookingEmail(apiKey, user, users, agentEmail), ]; const model = new ChatOpenAI({ @@ -53,6 +53,8 @@ const agent = async ( Make sure your final answers are definitive, complete and well formatted. Sometimes, tools return errors. In this case, try to handle the error intelligently or ask the user for more information. Tools will always handle times in UTC, but times sent to users should be formatted per that user's timezone. +In responses to users, always summarize necessary context and open the door to follow ups. For example "I have booked your chat with @username for 3pm on Wednesday, December 20th, 2023 EST. Please let me know if you need to reschedule." +If you can't find a referenced user, ask the user for their email or @username. Make sure to specify that usernames require the @username format. Users don't know other users' userIds. The primary user's id is: ${userId} The primary user's username is: ${user.username} diff --git a/apps/ai/src/utils/extractUsers.ts b/apps/ai/src/utils/extractUsers.ts index 0a5686bef1..10a6f9fe84 100644 --- a/apps/ai/src/utils/extractUsers.ts +++ b/apps/ai/src/utils/extractUsers.ts @@ -6,8 +6,12 @@ import type { UserList } from "../types/user"; * Extracts usernames (@Example) and emails (hi@example.com) from a string */ export const extractUsers = async (text: string) => { - const usernames = text.match(/(? username.slice(1)); - const emails = text.match(/[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+/g); + const usernames = text + .match(/(? username.slice(1).toLowerCase()); + const emails = text + .match(/[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+/g) + ?.map((email) => email.toLowerCase()); const dbUsersFromUsernames = usernames ? await prisma.user.findMany({ diff --git a/package.json b/package.json index effb13590d..49263e366f 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "edit-app-template": "yarn app-store edit-template", "delete-app-template": "yarn app-store delete-template", "build": "turbo run build --filter=@calcom/web...", + "build:ai": "turbo run build --scope=\"@calcom/ai\"", "clean": "find . -name node_modules -o -name .next -o -name .turbo -o -name dist -type d -prune | xargs rm -rf", "db-deploy": "turbo run db-deploy", "db-seed": "turbo run db-seed", diff --git a/packages/app-store/cal-ai/api/_getAdd.ts b/packages/app-store/cal-ai/api/_getAdd.ts index 9928f1a72f..a6dec2da5a 100644 --- a/packages/app-store/cal-ai/api/_getAdd.ts +++ b/packages/app-store/cal-ai/api/_getAdd.ts @@ -33,6 +33,19 @@ export async function getHandler(req: NextApiRequest, res: NextApiResponse) { }, }); + await fetch( + `${process.env.NODE_ENV === "development" ? "http://localhost:3005" : "https://cal.ai"}/api/onboard`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + userId: session.user.id, + }), + } + ); + return { url: getInstalledAppPath({ variant: appConfig.variant, slug: "cal-ai" }) }; } diff --git a/turbo.json b/turbo.json index 977c976d2e..849d70f2fe 100644 --- a/turbo.json +++ b/turbo.json @@ -51,6 +51,7 @@ "BACKEND_URL", "APP_ID", "APP_URL", + "SENDER_DOMAIN", "PARSE_KEY", "NODE_ENV", "OPENAI_API_KEY",