From 6f20ba6596b9dc0b7ac3242e4cabd7ff7bcd6fde Mon Sep 17 00:00:00 2001 From: Lance Martin Date: Fri, 23 Feb 2024 15:14:40 -0800 Subject: [PATCH] Notebook for testing --- CRAG.jpg | Bin 0 -> 90841 bytes langgraph-engineer.ipynb | 418 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 418 insertions(+) create mode 100644 CRAG.jpg create mode 100644 langgraph-engineer.ipynb diff --git a/CRAG.jpg b/CRAG.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1868308be6070388f9efe4f046ab230d98036c8 GIT binary patch literal 90841 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 'source'\n", + "d_sorted = sorted(docs, key=lambda x: x.metadata[\"source\"])\n", + "d_reversed = list(reversed(d_sorted))\n", + "\n", + "# Concatenate the 'page_content'\n", + "langgraph_docs = \"\\n\\n\\n --- \\n\\n\\n\".join(\n", + " [doc.page_content for doc in d_reversed]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "65c20427-fcd0-4aa9-a913-c2339f0e53fd", + "metadata": {}, + "source": [ + "### User image" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bc4e62be-e338-4ef1-929a-079fa66e7774", + "metadata": {}, + "outputs": [], + "source": [ + "import base64\n", + "import os\n", + "def encode_image(image_path):\n", + " \"\"\"Getting the base64 string\"\"\"\n", + " with open(image_path, \"rb\") as image_file:\n", + " return base64.b64encode(image_file.read()).decode(\"utf-8\")\n", + "\n", + "image_path = \"CRAG.jpg\"\n", + "img_base_64 = encode_image(image_path)" + ] + }, + { + "cell_type": "markdown", + "id": "f2e7f060-9a85-4135-95f2-1a6741bb0ec5", + "metadata": {}, + "source": [ + "### Image-to-code" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f6762e64-24c6-4091-b969-dbd374922a1e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "from langchain_core.prompts import ChatPromptTemplate \n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "# Image to LangGraph boilerplate prompt\n", + "template=\"\"\"Here are the full LangGrah docs: \\n --- --- --- \\n {docs} \\n --- --- --- \\n \n", + " You will be shown an image of a graph with nodes as circles and edges \\n\n", + " as squares. Each node and edge has a label. Use the provided LangGraph docs to convert \\n\n", + " the image into a LangGraph graph. This will have 3 things: (1) create a dummy \\n\n", + " state value. (2) Define a dummy function for each each node or edge. (3) finally \\n\n", + " create the graph workflow that connects all edges and nodes together. \\n\n", + " Structure your answer with a description of the code solution. \\n\n", + " Then list the imports. And finally list the functioning code block.\"\"\" \n", + "\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [(\"system\", \"You are an expert in converting graph visualizations into LangGrah.\"),\n", + " (\"human\",[\n", + " {\"type\": \"text\", \"text\": template},\n", + " {\"type\": \"image_url\",\"image_url\": \"data:image/jpeg;base64,{my_image}\"}\n", + " ],\n", + " ),\n", + " ]\n", + " ) \n", + "\n", + "# Multi-modal LLM\n", + "model = ChatOpenAI(temperature=0, model=\"gpt-4-vision-preview\", max_tokens=\"1028\")\n", + "\n", + "chain = (\n", + " prompt\n", + " | model \n", + ")\n", + "\n", + "code_solution = chain.invoke({\"my_image\": img_base_64, \"docs\": langgraph_docs})" + ] + }, + { + "cell_type": "markdown", + "id": "f301d789-a5ca-49c1-ac6f-ed806de887c5", + "metadata": {}, + "source": [ + "### Code-to-structured output" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2ba53cee-625b-425e-9335-e40850536500", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "\n", + "# Structured output prompt\n", + "template=\"\"\"You are an expert a code formatting, strating with a code solution \\n\n", + " \\n --- --- \\n {code} \\n --- --- \\n Structure the solution in three parts \\n\n", + " with a prefix that defines the problem, then list the imports, and finally \\n\n", + " list the functioning code block.\"\"\" \n", + "\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [(\"system\", \"You are an expert at code formatting.\"),\n", + " (\"human\",[\n", + " {\"type\": \"text\", \"text\": template},\n", + " ],\n", + " ),\n", + " ]\n", + " ) \n", + "\n", + "# Data model\n", + "class code(BaseModel):\n", + " \"\"\"Code output\"\"\"\n", + " prefix: str = Field(description=\"Description of the problem and approach\")\n", + " imports: str = Field(description=\"Code block import statements\")\n", + " code: str = Field(description=\"Code block not including import statements\")\n", + "\n", + "# LLM\n", + "model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\")\n", + "\n", + "# Tool\n", + "code_tool_oai = convert_to_openai_tool(code)\n", + "\n", + "# LLM with tool and enforce invocation\n", + "llm_with_tool = model.bind(\n", + " tools=[code_tool_oai],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"code\"}},\n", + ")\n", + "\n", + "# Parser\n", + "parser_tool = PydanticToolsParser(tools=[code])\n", + "\n", + "chain = (\n", + " prompt\n", + " | llm_with_tool \n", + " | parser_tool\n", + ")\n", + "\n", + "formatted_code = chain.invoke({\"code\": code_solution})" + ] + }, + { + "cell_type": "markdown", + "id": "17c264ed-ea20-4ebb-ae93-dfb18f92d8dd", + "metadata": {}, + "source": [ + "Here is te resulting code - " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1e435fc0-cf03-4fe2-a728-0495b79d5897", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "img = mpimg.imread('CRAG.jpg')\n", + "plt.imshow(img)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "57d41a0e-8bba-4d36-9f36-c52a7ecd0b28", + "metadata": {}, + "outputs": [], + "source": [ + "exec(formatted_code[0].imports)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "35032676-5255-4b2f-8be7-445a2b3bc93c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'question': 'Rewritten question', 'documents': ['doc1', 'doc2', 'doc1', 'doc2', 'web_doc1'], 'answer': 'Generated answer'}\n" + ] + } + ], + "source": [ + "exec(formatted_code[0].code)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "74031a1d-21b4-45a2-ba7f-b2ead25a0f1f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'question': 'Rewritten question', 'documents': ['doc1', 'doc2', 'doc1', 'doc2', 'web_doc1'], 'answer': 'Generated answer'}\n" + ] + } + ], + "source": [ + "### From the imports, code from above ###\n", + "\n", + "from typing import TypedDict, Annotated, List\n", + "from langgraph.graph import StateGraph\n", + "import operator\n", + "\n", + "from typing import TypedDict, List, Annotated\n", + "import operator\n", + "\n", + "# Define the state of the graph\n", + "class AgentState(TypedDict):\n", + " question: str\n", + " documents: Annotated[List[str], operator.add]\n", + " answer: str\n", + "\n", + "# Dummy functions for each node\n", + "def retrieve(state: AgentState):\n", + " # Dummy retrieval logic\n", + " return {\"documents\": [\"doc1\", \"doc2\"]}\n", + "\n", + "def grade(state: AgentState):\n", + " # Dummy grading logic\n", + " return state\n", + "\n", + "def generate(state: AgentState):\n", + " # Dummy generation logic\n", + " return {\"answer\": \"Generated answer\"}\n", + "\n", + "def rewrite_query(state: AgentState):\n", + " # Dummy query rewriting logic\n", + " return {\"question\": \"Rewritten question\"}\n", + "\n", + "def web_search(state: AgentState):\n", + " # Dummy web search logic\n", + " return {\"documents\": [\"web_doc1\"]}\n", + "\n", + "# Dummy function for the conditional edge\n", + "def is_doc_relevant(state: AgentState):\n", + " # Dummy relevance checking logic\n", + " return \"yes\" if \"relevant_doc\" in state[\"documents\"] else \"no\"\n", + "\n", + "# Assuming a class StateGraph is defined elsewhere that handles the workflow logic\n", + "# Create the graph workflow\n", + "workflow = StateGraph(AgentState)\n", + "\n", + "# Add nodes to the graph\n", + "workflow.add_node(\"retrieve\", retrieve)\n", + "workflow.add_node(\"grade\", grade)\n", + "workflow.add_node(\"generate\", generate)\n", + "workflow.add_node(\"rewrite_query\", rewrite_query)\n", + "workflow.add_node(\"web_search\", web_search)\n", + "\n", + "# Set the entry point\n", + "workflow.set_entry_point(\"retrieve\")\n", + "\n", + "# Add edges to the graph\n", + "workflow.add_edge(\"retrieve\", \"grade\")\n", + "workflow.add_conditional_edges(\n", + " \"grade\",\n", + " is_doc_relevant,\n", + " {\n", + " \"yes\": \"generate\",\n", + " \"no\": \"rewrite_query\"\n", + " }\n", + ")\n", + "workflow.add_edge(\"rewrite_query\", \"web_search\")\n", + "workflow.add_edge(\"web_search\", \"generate\")\n", + "\n", + "# Set the finish point\n", + "workflow.set_finish_point(\"generate\")\n", + "\n", + "# Compile the graph into a runnable application\n", + "app = workflow.compile()\n", + "\n", + "# Example usage\n", + "inputs = {\"question\": \"What is the weather like today?\"}\n", + "output = app.invoke(inputs)\n", + "print(output)" + ] + }, + { + "cell_type": "markdown", + "id": "b85f85f8-44b1-41af-8853-73590bf9d028", + "metadata": {}, + "source": [ + "# Chat + Graph Build\n", + "\n", + "`Open question`\n", + "\n", + "* Perform all the user-guided QA prior to graph up front (like GPT-Engineer).\n", + "\n", + "or \n", + "\n", + "* Build each node / edge individually with user-guided QA per-node / edge." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00c7ea48-3a4f-4fde-a4af-0ec8f77d30e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}