blob: d1067287132366fdcaf933871a8e317b19d70173 [file] [log] [blame]
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Haystack + Burr integration\n",
"\n",
"Haystack is a Python library to build AI pipelines. It assembles `Component` objects into a `Pipeline`, which is a graph of operations. One benefit of Haystack is that it provides many pre-built components to manage documents and interact with LLMs.\n",
"\n",
"This notebook shows how to convert a Haystack `Component` into a Burr `Action` and a `Pipeline` into a `Graph`. This allows you to integrate Haystack with Burr and leverage other Burr and Burr UI features!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Native Haystack\n",
"The next cells show how to build a simple RAG pipeline using Haystack. You create the components and add them to the pipeline using `.add_component()`. Then, you need to specify connections between components using `.connect()`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Use your OpenAI API key to execute the pipeline in later cells.\n",
"import os\n",
"os.environ[\"OPENAI_API_KEY\"] = \"sk-...\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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/PPPSts/s31GoxGyLKtdhsOoEi2G3377zURE3+t0usFq1+LocnNzIYTARx99hJEjR8LNzQ09e/YEABQWFuK1115DvXr14Onpic6dO2Pz5s3Kth9//DGEEHj11VfRsGFD1KhRA3369EFMTMwtj3f69GkIISCEwNtvv60sv9Oxjh8/jr59+8Ld3R1NmjTB+PHj+YPlARg8eDDeeustTJ48GTVr1oSnpyeGDBmCvXv3on///qhRowZatGiBTZs2WWx3+vRpPPvss/Dw8EDdunXxxBNPKK2D06dPo02b67dXGjZsGIQQGDNmDACguLgYs2bNQosWLeDs7IymTZvi7bffhtlsVuHZ248qEQwlvgQwXO0iqop58+bB19cXv/76Kz7++GPIsoxBgwZh27ZtmDFjBj777DN06NABw4cPx9q1ay22LS4uxpYtW7Bp0ybk5OTg0UcfvWXfcd26dbFlyxY4OzsryypyrLCwMBw7dgzLli3Da6+9hrNnz0KjqUr/HNSzcOFCAMCvv/6KN954A9999x369++PwYMHY+/evQgODsaYMWOQkpICADh37hy6d++OCxcuYPny5Vi4cCGKi4vxyCOPICEhAQ0aNMDnn38OAJg7dy727duHWbNmAQCcnJzw888/Y9CgQVi6dCn69euHefPm4eOPP1bxDDCbotPpSO0aHBkRBeXk5BAAeuKJJ+hGX331Fbm4uNDZs2ctlg8fPpzat29PRETLli0jAHT58mXl7+np6eTs7Eyvv/46ERFFR0cTAEpKSrLYT7Vq1WjWrFkVPlbjxo3pscceo5t8pPY5tBYiev3mJ2cLnnnmGWrbtq3FMl9fX3ruueeUx2fOnCEA9NlnnxER0cSJE6lDhw5kNBqVda5du0ZNmzalyZMnExFRUlISAaDo6Ogyx5Rl2eJxz549qXv37lZ/blbUS+33T1X7irRZkqTn1S6iKujbt6/F4x07dsBoNKJFixZwdXVV/ouOjsbff/99y/00bdoUbdq0uatrCBU51qhRo/DTTz/hlVdewfnz5+/jmbK7Vb16dYvHrq6uqFatmvK4cePGQEm3JEpez2PHjsHd3V15LT08PJCRkXHb906p8+fPY+LEifD390etWrUQHx+Pc+fOWf15OZIqcfH5BmuFEMMAfKV2IY7O3d3d4vG5c+dQv359/PLLL2XWdXFxue2+vL29cenS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",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from haystack.components.embedders import OpenAITextEmbedder\n",
"from haystack.components.builders import PromptBuilder\n",
"from haystack.components.generators import OpenAIGenerator\n",
"from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever\n",
"from haystack.document_stores.in_memory import InMemoryDocumentStore\n",
"from haystack import Pipeline\n",
"\n",
"\n",
"# 1. create components\n",
"document_store = InMemoryDocumentStore()\n",
"text_embedder = OpenAITextEmbedder(model=\"text-embedding-3-small\")\n",
"prompt_builder = PromptBuilder(template=\"Document: {{documents}} Question: {{question}}\")\n",
"retriever = InMemoryEmbeddingRetriever(document_store)\n",
"generator = OpenAIGenerator(model=\"gpt-4o-mini\")\n",
"\n",
"# 2. create pipeline\n",
"basic_rag_pipeline = Pipeline()\n",
"\n",
"# 3. add components to the pipeline\n",
"basic_rag_pipeline.add_component(\"text_embedder\", text_embedder)\n",
"basic_rag_pipeline.add_component(\"retriever\", retriever)\n",
"basic_rag_pipeline.add_component(\"prompt_builder\", prompt_builder)\n",
"basic_rag_pipeline.add_component(\"llm\", generator)\n",
"\n",
"# 4. connect components\n",
"basic_rag_pipeline.connect(\"text_embedder.embedding\", \"retriever.query_embedding\")\n",
"basic_rag_pipeline.connect(\"retriever\", \"prompt_builder.documents\")\n",
"basic_rag_pipeline.connect(\"prompt_builder\", \"llm\")\n",
"\n",
"basic_rag_pipeline.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Without using any integration, you could use Haystack within Burr's `actions`. The next is illustrative of how it can work."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: %3 Pages: 1 -->\n",
"<svg width=\"473pt\" height=\"309pt\"\n",
" viewBox=\"0.00 0.00 473.00 309.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 305)\">\n",
"<title>%3</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-305 469,-305 469,4 -4,4\"/>\n",
"<!-- embed_text -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>embed_text</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M337.5,-235C337.5,-235 111.5,-235 111.5,-235 105.5,-235 99.5,-229 99.5,-223 99.5,-223 99.5,-210 99.5,-210 99.5,-204 105.5,-198 111.5,-198 111.5,-198 337.5,-198 337.5,-198 343.5,-198 349.5,-204 349.5,-210 349.5,-210 349.5,-223 349.5,-223 349.5,-229 343.5,-235 337.5,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"224.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">embed_text(): query_embedding</text>\n",
"</g>\n",
"<!-- retrieve_documents -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>retrieve_documents</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M371,-169C371,-169 12,-169 12,-169 6,-169 0,-163 0,-157 0,-157 0,-144 0,-144 0,-138 6,-132 12,-132 12,-132 371,-132 371,-132 377,-132 383,-138 383,-144 383,-144 383,-157 383,-157 383,-163 377,-169 371,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"191.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">retrieve_documents(query_embedding): documents</text>\n",
"</g>\n",
"<!-- embed_text&#45;&gt;retrieve_documents -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>embed_text&#45;&gt;retrieve_documents</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M215.31,-197.67C212.23,-191.71 208.73,-184.92 205.38,-178.42\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"208.34,-176.52 200.64,-169.23 202.12,-179.72 208.34,-176.52\"/>\n",
"</g>\n",
"<!-- input__user_question -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>input__user_question</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"383,-301 218,-301 218,-264 383,-264 383,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"300.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: user_question</text>\n",
"</g>\n",
"<!-- input__user_question&#45;&gt;embed_text -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>input__user_question&#45;&gt;embed_text</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M279.33,-263.67C271.19,-256.82 261.76,-248.88 253.04,-241.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"255.2,-238.77 245.29,-235.01 250.69,-244.13 255.2,-238.77\"/>\n",
"</g>\n",
"<!-- build_prompt -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>build_prompt</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M452.5,-103C452.5,-103 148.5,-103 148.5,-103 142.5,-103 136.5,-97 136.5,-91 136.5,-91 136.5,-78 136.5,-78 136.5,-72 142.5,-66 148.5,-66 148.5,-66 452.5,-66 452.5,-66 458.5,-66 464.5,-72 464.5,-78 464.5,-78 464.5,-91 464.5,-91 464.5,-97 458.5,-103 452.5,-103\"/>\n",
"<text text-anchor=\"middle\" x=\"300.5\" y=\"-80.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">build_prompt(documents): question_prompt</text>\n",
"</g>\n",
"<!-- input__user_question&#45;&gt;build_prompt -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>input__user_question&#45;&gt;build_prompt</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M327.17,-263.94C337.84,-256 349.66,-245.94 358.5,-235 388.7,-197.6 416.59,-173 391.5,-132 385.48,-122.17 376.66,-114.33 366.84,-108.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"368.42,-104.98 358,-103.05 364.94,-111.06 368.42,-104.98\"/>\n",
"</g>\n",
"<!-- retrieve_documents&#45;&gt;build_prompt -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>retrieve_documents&#45;&gt;build_prompt</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M221.57,-131.84C233.96,-124.57 248.48,-116.05 261.66,-108.31\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"263.67,-111.18 270.52,-103.1 260.13,-105.15 263.67,-111.18\"/>\n",
"</g>\n",
"<!-- generate_answer -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>generate_answer</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M453,-37C453,-37 148,-37 148,-37 142,-37 136,-31 136,-25 136,-25 136,-12 136,-12 136,-6 142,0 148,0 148,0 453,0 453,0 459,0 465,-6 465,-12 465,-12 465,-25 465,-25 465,-31 459,-37 453,-37\"/>\n",
"<text text-anchor=\"middle\" x=\"300.5\" y=\"-14.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">generate_answer(question_prompt): answer</text>\n",
"</g>\n",
"<!-- build_prompt&#45;&gt;generate_answer -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>build_prompt&#45;&gt;generate_answer</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M300.5,-65.67C300.5,-59.99 300.5,-53.55 300.5,-47.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"304,-47.23 300.5,-37.23 297,-47.23 304,-47.23\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.graphs.Digraph at 0x7fd6970b69d0>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from burr.core import action, State, ApplicationBuilder\n",
"\n",
"\n",
"@action(reads=[], writes=[\"query_embedding\"])\n",
"def embed_text(state: State, user_question: str) -> State:\n",
" text_embedder = OpenAITextEmbedder(model=\"text-embedding-3-small\")\n",
"\n",
" results = text_embedder.run(text=user_question)\n",
" return state.update(query_embedding=results[\"embedding\"])\n",
"\n",
"\n",
"@action(reads=[\"query_embedding\"], writes=[\"documents\"])\n",
"def retrieve_documents(state: State) -> State:\n",
" query_embedding = state[\"query_embedding\"]\n",
"\n",
" document_store = InMemoryDocumentStore()\n",
" retriever = InMemoryEmbeddingRetriever(document_store)\n",
"\n",
" results = retriever.run(query_embedding=query_embedding)\n",
" return state.update(documents=results[\"documents\"])\n",
"\n",
"\n",
"@action(reads=[\"documents\"], writes=[\"question_prompt\"])\n",
"def build_prompt(state: State, user_question: str) -> State:\n",
" documents = state[\"documents\"]\n",
"\n",
" prompt_builder = PromptBuilder(template=\"Document: {{documents}} Question: {{question}}\")\n",
"\n",
" results = prompt_builder.run(documents=documents, question=user_question) \n",
" return state.update(question_prompt=results[\"prompt\"])\n",
"\n",
"\n",
"@action(reads=[\"question_prompt\"], writes=[\"answer\"])\n",
"def generate_answer(state: State) -> State:\n",
" question_prompt = state[\"question_prompt\"]\n",
"\n",
" generator = OpenAIGenerator(model=\"gpt-4o-mini\")\n",
"\n",
" results = generator.run(prompt=question_prompt)\n",
" return state.update(answer=results[\"text\"])\n",
"\n",
"\n",
"app = (\n",
" ApplicationBuilder()\n",
" .with_actions(\n",
" embed_text,\n",
" retrieve_documents,\n",
" build_prompt,\n",
" generate_answer\n",
" )\n",
" .with_transitions(\n",
" (\"embed_text\", \"retrieve_documents\"),\n",
" (\"retrieve_documents\", \"build_prompt\"),\n",
" (\"build_prompt\", \"generate_answer\"))\n",
" .with_entrypoint(\"embed_text\")\n",
" .build()\n",
")\n",
"app.visualize(include_state=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notes:\n",
"- Instead of using `Component` objects, we wrap them into `@action` decorated functions.\n",
"- While Haystack pipelines allow components to communicate via sockets, Burr relies on a centralized state.\n",
"- Burr requires building the `Graph` \"all at once\" via the `ApplicationBuilder` or `GraphBuilder` while Haystack allows to incrementally add `.add_component()` and `.connect()` statements to the pipeline.\n",
"- Haystack allows the parameters of `Component.run()` to be provided by other components via sockets or from the user inputs. Burr separates the two via the `State` object or the function arguments given through `.run(inputs=...)`.\n",
"- Haystack `Component` are objects, meaning they need to be instantiated and are stateful. Burr `Action` are stateless, which allows to resume runs from any `State` and enable \"time-travel debugging\".\n",
"- Haystack uses a `Router` component to [expression conditional edges](https://docs.haystack.deepset.ai/reference/routers-api#conditionalrouter). Burr allows to add condition directly via the `.with_transitions()` method by specifying in the tuple `(from_action, to_action, condition)`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Burr's `HaystackAction`\n",
"\n",
"To avoid having to wrap each component into an `@action` function, the `HaystackAction` was added to Burr. It takes an instantiated `Component`, a `name`, and the `reads/writes` of the action.\n",
"\n",
"The next cell shows two identical actions, one without the integration (taken from the previous section) and one using `HaystackAction`.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from burr.integrations.haystack import HaystackAction\n",
"\n",
"@action(reads=[\"query_embedding\"], writes=[\"documents\"])\n",
"def retrieve_documents(state: State) -> State:\n",
" query_embedding = state[\"query_embedding\"]\n",
"\n",
" document_store = InMemoryDocumentStore()\n",
" retriever = InMemoryEmbeddingRetriever(document_store)\n",
" \n",
" results = retriever.run(query_embedding=query_embedding)\n",
" return state.update(documents=results[\"documents\"])\n",
"\n",
"\n",
"haystack_retrieve_documents = HaystackAction(\n",
" component=InMemoryEmbeddingRetriever(InMemoryDocumentStore()),\n",
" name=\"retrieve_documents\",\n",
" reads=[\"query_embedding\"],\n",
" writes=[\"documents\"],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The next cell shows the entire application using the `HaystackAction` integration. The action `display_answer` defined using `@action` was added to show you can can combine both approaches.\n",
"\n",
"Note that some for some `HaystackAction`, `reads` and `writes` are dictionaries instead of the usual lists. This helps map the values from the Burr `State` to the Haystack `Component.run()` parameters and outputs. \n",
"\n",
"For example, in `generate_answer`:\n",
" - `reads={\"prompt\": \"question_prompt\"}` takes the value `State[\"question_prompt\"]` and assigns it to `Component.run(prompt=...)`\n",
" - `writes={\"answer\": \"replies\"}` takes the value `Component.run(...)[\"replies\"]` and assigns it to `state.update(answer=...)`"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: %3 Pages: 1 -->\n",
"<svg width=\"1446pt\" height=\"375pt\"\n",
" viewBox=\"0.00 0.00 1445.50 375.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 371)\">\n",
"<title>%3</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-371 1441.5,-371 1441.5,4 -4,4\"/>\n",
"<!-- embed_text -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>embed_text</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M1425.5,-301C1425.5,-301 1199.5,-301 1199.5,-301 1193.5,-301 1187.5,-295 1187.5,-289 1187.5,-289 1187.5,-276 1187.5,-276 1187.5,-270 1193.5,-264 1199.5,-264 1199.5,-264 1425.5,-264 1425.5,-264 1431.5,-264 1437.5,-270 1437.5,-276 1437.5,-276 1437.5,-289 1437.5,-289 1437.5,-295 1431.5,-301 1425.5,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"1312.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">embed_text(): query_embedding</text>\n",
"</g>\n",
"<!-- retrieve_documents -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>retrieve_documents</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M1126,-235C1126,-235 767,-235 767,-235 761,-235 755,-229 755,-223 755,-223 755,-210 755,-210 755,-204 761,-198 767,-198 767,-198 1126,-198 1126,-198 1132,-198 1138,-204 1138,-210 1138,-210 1138,-223 1138,-223 1138,-229 1132,-235 1126,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"946.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">retrieve_documents(query_embedding): documents</text>\n",
"</g>\n",
"<!-- embed_text&#45;&gt;retrieve_documents -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>embed_text&#45;&gt;retrieve_documents</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1212,-263.93C1163.9,-255.51 1106.16,-245.42 1056.84,-236.79\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1057.22,-233.31 1046.77,-235.03 1056.02,-240.2 1057.22,-233.31\"/>\n",
"</g>\n",
"<!-- input__text -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>input__text</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"1360,-367 1265,-367 1265,-330 1360,-330 1360,-367\"/>\n",
"<text text-anchor=\"middle\" x=\"1312.5\" y=\"-344.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: text</text>\n",
"</g>\n",
"<!-- input__text&#45;&gt;embed_text -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>input__text&#45;&gt;embed_text</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1312.5,-329.67C1312.5,-323.99 1312.5,-317.55 1312.5,-311.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1316,-311.23 1312.5,-301.23 1309,-311.23 1316,-311.23\"/>\n",
"</g>\n",
"<!-- build_prompt -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>build_prompt</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M751.5,-169C751.5,-169 447.5,-169 447.5,-169 441.5,-169 435.5,-163 435.5,-157 435.5,-157 435.5,-144 435.5,-144 435.5,-138 441.5,-132 447.5,-132 447.5,-132 751.5,-132 751.5,-132 757.5,-132 763.5,-138 763.5,-144 763.5,-144 763.5,-157 763.5,-157 763.5,-163 757.5,-169 751.5,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"599.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">build_prompt(documents): question_prompt</text>\n",
"</g>\n",
"<!-- retrieve_documents&#45;&gt;build_prompt -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>retrieve_documents&#45;&gt;build_prompt</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M851.22,-197.93C805.7,-189.53 751.1,-179.46 704.4,-170.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"705.03,-167.41 694.57,-169.03 703.76,-174.29 705.03,-167.41\"/>\n",
"</g>\n",
"<!-- input__top_k -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>input__top_k</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"666,-301 561,-301 561,-264 666,-264 666,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"613.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: top_k</text>\n",
"</g>\n",
"<!-- input__top_k&#45;&gt;retrieve_documents -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>input__top_k&#45;&gt;retrieve_documents</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M666.17,-266.23C669.32,-265.44 672.45,-264.69 675.5,-264 721.8,-253.52 773.03,-244.17 818.37,-236.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"818.95,-240.1 828.25,-235.02 817.81,-233.19 818.95,-240.1\"/>\n",
"</g>\n",
"<!-- input__scale_score -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>input__scale_score</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"830.5,-301 684.5,-301 684.5,-264 830.5,-264 830.5,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"757.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: scale_score</text>\n",
"</g>\n",
"<!-- input__scale_score&#45;&gt;retrieve_documents -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>input__scale_score&#45;&gt;retrieve_documents</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M809.4,-263.93C832.84,-255.99 860.71,-246.55 885.17,-238.27\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"886.37,-241.56 894.72,-235.03 884.13,-234.93 886.37,-241.56\"/>\n",
"</g>\n",
"<!-- input__return_embedding -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>input__return_embedding</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"1044,-301 849,-301 849,-264 1044,-264 1044,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"946.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: return_embedding</text>\n",
"</g>\n",
"<!-- input__return_embedding&#45;&gt;retrieve_documents -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>input__return_embedding&#45;&gt;retrieve_documents</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M946.5,-263.67C946.5,-257.99 946.5,-251.55 946.5,-245.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"950,-245.23 946.5,-235.23 943,-245.23 950,-245.23\"/>\n",
"</g>\n",
"<!-- input__filters -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>input__filters</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"1169,-301 1062,-301 1062,-264 1169,-264 1169,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"1115.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: filters</text>\n",
"</g>\n",
"<!-- input__filters&#45;&gt;retrieve_documents -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>input__filters&#45;&gt;retrieve_documents</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1068.87,-263.84C1048.28,-256.04 1023.9,-246.81 1002.34,-238.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1003.57,-235.37 992.98,-235.1 1001.09,-241.91 1003.57,-235.37\"/>\n",
"</g>\n",
"<!-- generate_answer -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>generate_answer</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M470,-103C470,-103 165,-103 165,-103 159,-103 153,-97 153,-91 153,-91 153,-78 153,-78 153,-72 159,-66 165,-66 165,-66 470,-66 470,-66 476,-66 482,-72 482,-78 482,-78 482,-91 482,-91 482,-97 476,-103 470,-103\"/>\n",
"<text text-anchor=\"middle\" x=\"317.5\" y=\"-80.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">generate_answer(question_prompt): answer</text>\n",
"</g>\n",
"<!-- build_prompt&#45;&gt;generate_answer -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>build_prompt&#45;&gt;generate_answer</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M522.07,-131.93C485.7,-123.67 442.19,-113.8 404.66,-105.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"405.28,-101.83 394.76,-103.03 403.74,-108.66 405.28,-101.83\"/>\n",
"</g>\n",
"<!-- input__template_variables -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>input__template_variables</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"443,-235 244,-235 244,-198 443,-198 443,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"343.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: template_variables</text>\n",
"</g>\n",
"<!-- input__template_variables&#45;&gt;build_prompt -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>input__template_variables&#45;&gt;build_prompt</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M413.79,-197.93C446.53,-189.74 485.64,-179.97 519.5,-171.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"520.51,-174.85 529.37,-169.03 518.81,-168.06 520.51,-174.85\"/>\n",
"</g>\n",
"<!-- input__template -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>input__template</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"590,-235 461,-235 461,-198 590,-198 590,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"525.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: template</text>\n",
"</g>\n",
"<!-- input__template&#45;&gt;build_prompt -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>input__template&#45;&gt;build_prompt</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M546.11,-197.67C553.96,-190.89 563.03,-183.04 571.45,-175.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"573.98,-178.2 579.25,-169.01 569.4,-172.91 573.98,-178.2\"/>\n",
"</g>\n",
"<!-- input__question -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>input__question</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"736.5,-235 608.5,-235 608.5,-198 736.5,-198 736.5,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"672.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: question</text>\n",
"</g>\n",
"<!-- input__question&#45;&gt;build_prompt -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>input__question&#45;&gt;build_prompt</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M652.17,-197.67C644.43,-190.89 635.48,-183.04 627.17,-175.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"629.3,-172.97 619.47,-169.01 624.69,-178.23 629.3,-172.97\"/>\n",
"</g>\n",
"<!-- display_answer -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>display_answer</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M405,-37C405,-37 230,-37 230,-37 224,-37 218,-31 218,-25 218,-25 218,-12 218,-12 218,-6 224,0 230,0 230,0 405,0 405,0 411,0 417,-6 417,-12 417,-12 417,-25 417,-25 417,-31 411,-37 405,-37\"/>\n",
"<text text-anchor=\"middle\" x=\"317.5\" y=\"-14.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">display_answer(answer): </text>\n",
"</g>\n",
"<!-- generate_answer&#45;&gt;display_answer -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>generate_answer&#45;&gt;display_answer</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M317.5,-65.67C317.5,-59.99 317.5,-53.55 317.5,-47.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"321,-47.23 317.5,-37.23 314,-47.23 321,-47.23\"/>\n",
"</g>\n",
"<!-- input__generation_kwargs -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>input__generation_kwargs</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"199,-169 0,-169 0,-132 199,-132 199,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"99.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: generation_kwargs</text>\n",
"</g>\n",
"<!-- input__generation_kwargs&#45;&gt;generate_answer -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>input__generation_kwargs&#45;&gt;generate_answer</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M159.36,-131.93C186.76,-123.88 219.4,-114.3 247.89,-105.94\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"249.17,-109.21 257.78,-103.03 247.19,-102.49 249.17,-109.21\"/>\n",
"</g>\n",
"<!-- input__streaming_callback -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>input__streaming_callback</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"417.5,-169 217.5,-169 217.5,-132 417.5,-132 417.5,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"317.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: streaming_callback</text>\n",
"</g>\n",
"<!-- input__streaming_callback&#45;&gt;generate_answer -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>input__streaming_callback&#45;&gt;generate_answer</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M317.5,-131.67C317.5,-125.99 317.5,-119.55 317.5,-113.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"321,-113.23 317.5,-103.23 314,-113.23 321,-113.23\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.graphs.Digraph at 0x7fd6956f3790>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from burr.core import action, State, ApplicationBuilder\n",
"\n",
"embed_text = HaystackAction(\n",
" component=OpenAITextEmbedder(model=\"text-embedding-3-small\"),\n",
" name=\"embed_text\",\n",
" reads=[],\n",
" writes={\"query_embedding\": \"embedding\"},\n",
")\n",
"\n",
"retrieve_documents = HaystackAction(\n",
" component=InMemoryEmbeddingRetriever(InMemoryDocumentStore()),\n",
" name=\"retrieve_documents\",\n",
" reads=[\"query_embedding\"],\n",
" writes=[\"documents\"],\n",
")\n",
"\n",
"build_prompt = HaystackAction(\n",
" component=PromptBuilder(template=\"Document: {{documents}} Question: {{question}}\"),\n",
" name=\"build_prompt\",\n",
" reads=[\"documents\"],\n",
" writes={\"question_prompt\": \"prompt\"},\n",
")\n",
"\n",
"generate_answer = HaystackAction(\n",
" component=OpenAIGenerator(model=\"gpt-4o-mini\"),\n",
" name=\"generate_answer\",\n",
" reads={\"prompt\": \"question_prompt\"},\n",
" writes={\"answer\": \"replies\"}\n",
")\n",
"\n",
"@action(reads=[\"answer\"], writes=[])\n",
"def display_answer(state: State) -> State:\n",
" print(state[\"answer\"])\n",
" return state\n",
"\n",
"\n",
"app = (\n",
" ApplicationBuilder()\n",
" .with_actions(\n",
" embed_text,\n",
" retrieve_documents,\n",
" build_prompt,\n",
" generate_answer,\n",
" display_answer,\n",
" )\n",
" .with_transitions(\n",
" (\"embed_text\", \"retrieve_documents\"),\n",
" (\"retrieve_documents\", \"build_prompt\"),\n",
" (\"build_prompt\", \"generate_answer\"),\n",
" (\"generate_answer\", \"display_answer\"),\n",
" )\n",
" .with_entrypoint(\"embed_text\")\n",
" .build()\n",
")\n",
"app.visualize(include_state=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Running the application\n",
"To run the application, we specify when to halt execution and pass the question to two input fields: `text` and `question` (this matches the native Haystack API ([see **Asking a Question**](https://haystack.deepset.ai/tutorials/27_first_rag_pipeline))).\n",
"\n",
"You'll see a note that no documents were embedded or retrieved, but you should see the answer generated by the LLM nonetheless!"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"No Documents found with embeddings. Returning empty list. To generate embeddings, use a DocumentEmbedder.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"['The capital of France is Paris.']\n"
]
}
],
"source": [
"_, results, state = app.run(\n",
" halt_after=[\"display_answer\"],\n",
" inputs={\n",
" \"text\": \"What is the capital of France?\",\n",
" \"question\": \"What is the capital of France?\",\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'replies': ['The capital of France is Paris.'], 'meta': [{'model': 'gpt-4o-mini-2024-07-18', 'index': 0, 'finish_reason': 'stop', 'usage': {'completion_tokens': 7, 'prompt_tokens': 19, 'total_tokens': 26, 'completion_tokens_details': CompletionTokensDetails(audio_tokens=None, reasoning_tokens=0), 'prompt_tokens_details': PromptTokensDetails(audio_tokens=None, cached_tokens=0)}}]}\n"
]
}
],
"source": [
"print(results)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Converting a Haystack `Pipeline`\n",
"\n",
"If you have an existing Haystack `Pipeline`, you can convert it into a Burr `Graph` using in a single line of code using `haystack_pipeline_to_burr_graph()`.\n",
"\n",
"Next, we convert the `basic_rag_pipeline` defined at the beginning of the notebook. The resulting `Graph` can be passed to the `ApplicationBuilder.with_graph()` clause.\n",
"\n",
"The visualization should match the previous ones, but with different names (e.g., `generate_answer` is `llm`)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: %3 Pages: 1 -->\n",
"<svg width=\"1333pt\" height=\"309pt\"\n",
" viewBox=\"0.00 0.00 1332.50 309.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 305)\">\n",
"<title>%3</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-305 1328.5,-305 1328.5,4 -4,4\"/>\n",
"<!-- text_embedder -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>text_embedder</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M1312.5,-235C1312.5,-235 1110.5,-235 1110.5,-235 1104.5,-235 1098.5,-229 1098.5,-223 1098.5,-223 1098.5,-210 1098.5,-210 1098.5,-204 1104.5,-198 1110.5,-198 1110.5,-198 1312.5,-198 1312.5,-198 1318.5,-198 1324.5,-204 1324.5,-210 1324.5,-210 1324.5,-223 1324.5,-223 1324.5,-229 1318.5,-235 1312.5,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"1211.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">text_embedder(): embedding</text>\n",
"</g>\n",
"<!-- retriever -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>retriever</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M974,-169C974,-169 741,-169 741,-169 735,-169 729,-163 729,-157 729,-157 729,-144 729,-144 729,-138 735,-132 741,-132 741,-132 974,-132 974,-132 980,-132 986,-138 986,-144 986,-144 986,-157 986,-157 986,-163 980,-169 974,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"857.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">retriever(embedding): documents</text>\n",
"</g>\n",
"<!-- text_embedder&#45;&gt;retriever -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>text_embedder&#45;&gt;retriever</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1114.3,-197.93C1067.86,-189.53 1012.16,-179.46 964.52,-170.85\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"964.95,-167.37 954.48,-169.03 963.7,-174.26 964.95,-167.37\"/>\n",
"</g>\n",
"<!-- input__text -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>input__text</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"1259,-301 1164,-301 1164,-264 1259,-264 1259,-301\"/>\n",
"<text text-anchor=\"middle\" x=\"1211.5\" y=\"-278.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: text</text>\n",
"</g>\n",
"<!-- input__text&#45;&gt;text_embedder -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>input__text&#45;&gt;text_embedder</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1211.5,-263.67C1211.5,-257.99 1211.5,-251.55 1211.5,-245.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1215,-245.23 1211.5,-235.23 1208,-245.23 1215,-245.23\"/>\n",
"</g>\n",
"<!-- prompt_builder -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>prompt_builder</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M699,-103C699,-103 448,-103 448,-103 442,-103 436,-97 436,-91 436,-91 436,-78 436,-78 436,-72 442,-66 448,-66 448,-66 699,-66 699,-66 705,-66 711,-72 711,-78 711,-78 711,-91 711,-91 711,-97 705,-103 699,-103\"/>\n",
"<text text-anchor=\"middle\" x=\"573.5\" y=\"-80.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">prompt_builder(documents): prompt</text>\n",
"</g>\n",
"<!-- retriever&#45;&gt;prompt_builder -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>retriever&#45;&gt;prompt_builder</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M779.52,-131.93C742.89,-123.67 699.07,-113.8 661.28,-105.28\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"661.83,-101.82 651.31,-103.03 660.29,-108.65 661.83,-101.82\"/>\n",
"</g>\n",
"<!-- input__top_k -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>input__top_k</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"577,-235 472,-235 472,-198 577,-198 577,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"524.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: top_k</text>\n",
"</g>\n",
"<!-- input__top_k&#45;&gt;retriever -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>input__top_k&#45;&gt;retriever</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M577.17,-200.23C580.32,-199.44 583.45,-198.69 586.5,-198 632.8,-187.52 684.03,-178.17 729.37,-170.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"729.95,-174.1 739.25,-169.02 728.81,-167.19 729.95,-174.1\"/>\n",
"</g>\n",
"<!-- input__scale_score -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>input__scale_score</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"741.5,-235 595.5,-235 595.5,-198 741.5,-198 741.5,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"668.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: scale_score</text>\n",
"</g>\n",
"<!-- input__scale_score&#45;&gt;retriever -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>input__scale_score&#45;&gt;retriever</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M720.4,-197.93C743.84,-189.99 771.71,-180.55 796.17,-172.27\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"797.37,-175.56 805.72,-169.03 795.13,-168.93 797.37,-175.56\"/>\n",
"</g>\n",
"<!-- input__return_embedding -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>input__return_embedding</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"955,-235 760,-235 760,-198 955,-198 955,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"857.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: return_embedding</text>\n",
"</g>\n",
"<!-- input__return_embedding&#45;&gt;retriever -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>input__return_embedding&#45;&gt;retriever</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M857.5,-197.67C857.5,-191.99 857.5,-185.55 857.5,-179.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"861,-179.23 857.5,-169.23 854,-179.23 861,-179.23\"/>\n",
"</g>\n",
"<!-- input__filters -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>input__filters</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"1080,-235 973,-235 973,-198 1080,-198 1080,-235\"/>\n",
"<text text-anchor=\"middle\" x=\"1026.5\" y=\"-212.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: filters</text>\n",
"</g>\n",
"<!-- input__filters&#45;&gt;retriever -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>input__filters&#45;&gt;retriever</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M979.87,-197.84C959.28,-190.04 934.9,-180.81 913.34,-172.65\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"914.57,-169.37 903.98,-169.1 912.09,-175.91 914.57,-169.37\"/>\n",
"</g>\n",
"<!-- llm -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>llm</title>\n",
"<path fill=\"#b4d8e4\" stroke=\"black\" d=\"M362,-37C362,-37 273,-37 273,-37 267,-37 261,-31 261,-25 261,-25 261,-12 261,-12 261,-6 267,0 273,0 273,0 362,0 362,0 368,0 374,-6 374,-12 374,-12 374,-25 374,-25 374,-31 368,-37 362,-37\"/>\n",
"<text text-anchor=\"middle\" x=\"317.5\" y=\"-14.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">llm(prompt): </text>\n",
"</g>\n",
"<!-- prompt_builder&#45;&gt;llm -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>prompt_builder&#45;&gt;llm</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M503.21,-65.93C466.14,-56.66 420.9,-45.35 384.35,-36.21\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"384.84,-32.73 374.29,-33.7 383.14,-39.52 384.84,-32.73\"/>\n",
"</g>\n",
"<!-- input__template_variables -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>input__template_variables</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"417,-169 218,-169 218,-132 417,-132 417,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"317.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: template_variables</text>\n",
"</g>\n",
"<!-- input__template_variables&#45;&gt;prompt_builder -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>input__template_variables&#45;&gt;prompt_builder</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M387.79,-131.93C420.53,-123.74 459.64,-113.97 493.5,-105.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"494.51,-108.85 503.37,-103.03 492.81,-102.06 494.51,-108.85\"/>\n",
"</g>\n",
"<!-- input__template -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>input__template</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"564,-169 435,-169 435,-132 564,-132 564,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"499.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: template</text>\n",
"</g>\n",
"<!-- input__template&#45;&gt;prompt_builder -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>input__template&#45;&gt;prompt_builder</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M520.11,-131.67C527.96,-124.89 537.03,-117.04 545.45,-109.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"547.98,-112.2 553.25,-103.01 543.4,-106.91 547.98,-112.2\"/>\n",
"</g>\n",
"<!-- input__question -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>input__question</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"710.5,-169 582.5,-169 582.5,-132 710.5,-132 710.5,-169\"/>\n",
"<text text-anchor=\"middle\" x=\"646.5\" y=\"-146.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: question</text>\n",
"</g>\n",
"<!-- input__question&#45;&gt;prompt_builder -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>input__question&#45;&gt;prompt_builder</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M626.17,-131.67C618.43,-124.89 609.48,-117.04 601.17,-109.76\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"603.3,-106.97 593.47,-103.01 598.69,-112.23 603.3,-106.97\"/>\n",
"</g>\n",
"<!-- input__generation_kwargs -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>input__generation_kwargs</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"199,-103 0,-103 0,-66 199,-66 199,-103\"/>\n",
"<text text-anchor=\"middle\" x=\"99.5\" y=\"-80.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: generation_kwargs</text>\n",
"</g>\n",
"<!-- input__generation_kwargs&#45;&gt;llm -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>input__generation_kwargs&#45;&gt;llm</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M159.36,-65.93C187.78,-57.58 221.85,-47.58 251.07,-39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"252.17,-42.33 260.78,-36.15 250.2,-35.61 252.17,-42.33\"/>\n",
"</g>\n",
"<!-- input__streaming_callback -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>input__streaming_callback</title>\n",
"<polygon fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" points=\"417.5,-103 217.5,-103 217.5,-66 417.5,-66 417.5,-103\"/>\n",
"<text text-anchor=\"middle\" x=\"317.5\" y=\"-80.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"14.00\">input: streaming_callback</text>\n",
"</g>\n",
"<!-- input__streaming_callback&#45;&gt;llm -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>input__streaming_callback&#45;&gt;llm</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M317.5,-65.67C317.5,-59.99 317.5,-53.55 317.5,-47.33\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"321,-47.23 317.5,-37.23 314,-47.23 321,-47.23\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.graphs.Digraph at 0x7fd6940d2850>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from burr.integrations.haystack import haystack_pipeline_to_burr_graph\n",
"\n",
"\n",
"haystack_graph = haystack_pipeline_to_burr_graph(basic_rag_pipeline)\n",
"app = (\n",
" ApplicationBuilder()\n",
" .with_graph(haystack_graph)\n",
" .with_entrypoint(\"text_embedder\")\n",
" .build()\n",
")\n",
"app.visualize(include_state=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we run the converted Haystack `Pipeline`, we obtain outputs similar to the previous section."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"No Documents found with embeddings. Returning empty list. To generate embeddings, use a DocumentEmbedder.\n"
]
}
],
"source": [
"_, results, state = app.run(\n",
" halt_after=[\"llm\"],\n",
" inputs={\n",
" \"text\": \"What is the capital of France?\",\n",
" \"question\": \"What is the capital of France?\",\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'replies': ['The capital of France is Paris.'], 'meta': [{'model': 'gpt-4o-mini-2024-07-18', 'index': 0, 'finish_reason': 'stop', 'usage': {'completion_tokens': 7, 'prompt_tokens': 19, 'total_tokens': 26, 'completion_tokens_details': CompletionTokensDetails(audio_tokens=None, reasoning_tokens=0), 'prompt_tokens_details': PromptTokensDetails(audio_tokens=None, cached_tokens=0)}}]}\n"
]
}
],
"source": [
"print(results)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"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.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}