AI prompts
base on Sample AI movies app built with ❍ Ion # ❍ Movies Demo
A sample movies app built with [❍ Ion](https://github.com/sst/ion) to demo how to **use AI in your apps using your data** — [movies.sst.dev](https://movies.sst.dev)
![Movies App](screenshot.png)
The movie database in this app contains around 700 popular movies. You can search through them, check out related movies, and some of the movies are also tagged.
## About
Most of the AI demos to date include some form of chat. While this is useful, it doesn't apply to majority of the apps out there. It also involves storing your data outside your infrastructure.
This demo shows how you can use AI related features in your infrastructure in a way that makes sense to your users.
## AI
The following AI features are powered by our new Vector component.
1. **Tags** — Classify data based on text that's more descriptive and carries more context
2. **Related** — Find semantically similar data in your database
3. **Search** — Deep search your data and images using natural language
4. **Search Images** — Do a deep search through your data, including your images
### Vector Component
The Vector component is based on Amazon Bedrock and it exposes a couple of functions that makes it easy to use AI with your data.
- `ingest`: This takes some text, generates an embedding with a given model, and stores it in a Vector database powered by RDS. Also takes some metadata to tag the data.
- `retrieve`: Takes a prompt and optionally the metadata to filter on. Returns matching results with a score 0 - 1.
### Models
Currently the embeddings can be generated using the `titan-embed-text-v1`, `titan-embed-image-v1`, and `text-embedding-ada-002`.
### Ion
[❍ Ion](https://github.com/sst/ion) is an experimental new engine for [SST](https://sst.dev) that has some unique advantages over our previous CDK based engine. Here are a couple that you can see in action in this repo:
1. It's a lot faster to deploy, 10x faster
2. There are [no stacks](sst.config.ts#L15) or stack limits
3. No cyclical dependency issues in your resources
4. Access linked resources in Next.js doesn't need top-level await
5. Next.js 14 with linked resources are deployed in order and don't need a _double deploy_
6. Next.js apps have access to linked resources without the need for [`sst bind next build`](package.json#L7)
## How it Works
This demo works by ingesting movie data from IMDB, generating embeddings, and storing it in a Vector database. The Next.js app then retrieves the data from the Vector database.
The sample app is made up of **4 simple components** defined in the [`sst.config.ts`](sst.config.ts):
1. A DynamoDB table to store the movies
2. An S3 bucket to store the posters
3. A Vector database to store the embeddings
4. A Next.js app
---
Join the SST community over on [Discord](https://discord.gg/sst) and follow us on [Twitter](https://twitter.com/SST_dev).
", Assign "at most 3 tags" to the expected json: {"id":"7118","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"