chore: officially migrate to submodule (#4502)
* remove apps/core and apps/fern * fix precommit * add submodule updates in workflows * submodule * remove core tests * update core revision * Add submodules: true to all GitHub workflows - Ensure all workflows can access git submodules - Add submodules support to deployment, test, and CI workflows - Fix YAML syntax issues in workflow files 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * remove core-lint * upgrade core with latest main of oss --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,130 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "64fa991c-98e5-4be0-a838-06a4617d8be3",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Part 4: Adding external data \n",
|
||||
"In addition to short term, in-context memories, Letta agents also have a long term memory store called *archival memory*. We can enable agents to leverage external data (e.g. PDF files, database records, etc.) by inserting data into archival memory. In this example, we'll show how to load the Letta paper a *source*, which defines a set of data that can be attached to agents. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "c61ac9c3-cbea-47a5-a6a4-4133ffe5984e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We first download a PDF file, the Letta paper: "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f89e9156-3d2d-4ce6-b5e9-aeb4cdfd5657",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"url = \"https://arxiv.org/pdf/2310.08560\"\n",
|
||||
"response = requests.get(url)\n",
|
||||
"filename = \"letta_paper.pdf\"\n",
|
||||
"\n",
|
||||
"with open(filename, 'wb') as f:\n",
|
||||
" f.write(response.content)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bcfe3a48-cdb0-4843-9599-623753eb61b9",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Next, we create a Letta source to load data into: "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "7ccf21fb-5862-42c2-96ca-63e0ba2f48b5",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"letta_paper = client.sources.create(\n",
|
||||
" name=\"letta_paper\", \n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f114bf0b-6a25-4dbf-9c2c-59271d46ebba",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now that we have a source, we can load files into the source. Loading the file will take a bit of time, since the file needs to be parsed and stored as *embeddings* using an embedding model. The loading function returns a *job* which can be pinged for a status. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "6fe624eb-bf08-4267-a849-06103c1ad5b6",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"job = client.sources.files.upload(filename=filename, source_id=letta_paper.id)\n",
|
||||
"job"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "27ce13f5-d878-406d-9a5f-7e2335f2ef0d",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Attaching data to an agent \n",
|
||||
"To allow an agent to access data in a source, we need to *attach* it to the agent. This will load the source's data into the agent's archival memory. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "5be91571-87ee-411a-8e79-25c56c414360",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"client.agents.sources.attach(source_id=letta_paper.id, agent_id=basic_agent.id)\n",
|
||||
"# TODO: add system message saying that file has been attached \n",
|
||||
"\n",
|
||||
"from pprint import pprint\n",
|
||||
"\n",
|
||||
"# TODO: do soemthing accenture related \n",
|
||||
"# TODO: brag about query rewriting -- hyde paper \n",
|
||||
"response = client.agents.messages.create(agent_id=basic_agent.id, messages=[\n",
|
||||
" MessageCreate(\n",
|
||||
" role=\"user\",\n",
|
||||
" content=\"what is core memory? search your archival memory.\",\n",
|
||||
" )\n",
|
||||
"])\n",
|
||||
"pprint(response.messages)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "letta",
|
||||
"language": "python",
|
||||
"name": "letta"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.12.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in New Issue
Block a user