|
55 | 55 | "\n",
|
56 | 56 | "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"Enter OpenAI API Key: \")\n",
|
57 | 57 | "os.environ[\"ASTRA_DB_DATABASE_ID\"] = input(\"Enter Astra DB Database ID: \")\n",
|
58 |
| - "os.environ[\"ASTRA_DB_APPLICATION_TOKEN\"] = getpass.getpass(\"Enter Astra DB Application Token: \")\n", |
| 58 | + "os.environ[\"ASTRA_DB_APPLICATION_TOKEN\"] = getpass.getpass(\n", |
| 59 | + " \"Enter Astra DB Application Token: \"\n", |
| 60 | + ")\n", |
59 | 61 | "\n",
|
60 | 62 | "keyspace = input(\"Enter Astra DB Keyspace (Empty for default): \")\n",
|
61 | 63 | "if keyspace:\n",
|
|
75 | 77 | "text": [
|
76 | 78 | "Requirement already satisfied: python-dotenv in /Users/benjamin.chambers/Library/Caches/pypoetry/virtualenvs/knowledge-graph-bxUBmW8M-py3.11/lib/python3.11/site-packages (1.0.1)\n",
|
77 | 79 | "\n",
|
78 |
| - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.3.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m24.0\u001B[0m\n", |
79 |
| - "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\n", |
| 80 | + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", |
| 81 | + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", |
80 | 82 | "Note: you may need to restart the kernel to use updated packages.\n"
|
81 | 83 | ]
|
82 | 84 | },
|
|
96 | 98 | "# See `env.template` for an example of what you should have there.\n",
|
97 | 99 | "%pip install python-dotenv\n",
|
98 | 100 | "import dotenv\n",
|
| 101 | + "\n", |
99 | 102 | "dotenv.load_dotenv()"
|
100 | 103 | ]
|
101 | 104 | },
|
|
114 | 117 | "source": [
|
115 | 118 | "# Initialize cassandra connection from environment variables).\n",
|
116 | 119 | "import cassio\n",
|
| 120 | + "\n", |
117 | 121 | "cassio.init(auto=True)"
|
118 | 122 | ]
|
119 | 123 | },
|
|
132 | 136 | "source": [
|
133 | 137 | "# Create graph store.\n",
|
134 | 138 | "from ragstack_knowledge_graph.cassandra_graph_store import CassandraGraphStore\n",
|
| 139 | + "\n", |
135 | 140 | "graph_store = CassandraGraphStore()"
|
136 | 141 | ]
|
137 | 142 | },
|
|
342 | 347 | "source": [
|
343 | 348 | "# Render the extracted graph to GraphViz.\n",
|
344 | 349 | "from ragstack_knowledge_graph.render import render_graph_documents\n",
|
| 350 | + "\n", |
345 | 351 | "render_graph_documents(graph_documents)"
|
346 | 352 | ]
|
347 | 353 | },
|
|
450 | 456 | "source": [
|
451 | 457 | "# Example showing extracted entities (nodes)\n",
|
452 | 458 | "from ragstack_knowledge_graph import extract_entities\n",
|
453 |
| - "extract_entities(llm).invoke({ \"question\": \"Who is Marie Curie?\"})" |
| 459 | + "\n", |
| 460 | + "extract_entities(llm).invoke({\"question\": \"Who is Marie Curie?\"})" |
454 | 461 | ]
|
455 | 462 | },
|
456 | 463 | {
|
|
474 | 481 | "outputs": [],
|
475 | 482 | "source": [
|
476 | 483 | "from operator import itemgetter\n",
|
477 |
| - "from langchain_core.runnables import RunnableLambda, RunnablePassthrough\n", |
| 484 | + "\n", |
478 | 485 | "from langchain_core.prompts import ChatPromptTemplate\n",
|
479 |
| - "from ragstack_knowledge_graph import extract_entities\n", |
| 486 | + "from langchain_core.runnables import RunnableLambda, RunnablePassthrough\n", |
480 | 487 | "from langchain_openai import ChatOpenAI\n",
|
481 |
| - "llm = ChatOpenAI(model_name = \"gpt-4\")\n", |
| 488 | + "from ragstack_knowledge_graph import extract_entities\n", |
| 489 | + "\n", |
| 490 | + "llm = ChatOpenAI(model_name=\"gpt-4\")\n", |
| 491 | + "\n", |
482 | 492 | "\n",
|
483 | 493 | "def _combine_relations(relations):\n",
|
484 | 494 | " return \"\\n\".join(map(repr, relations))\n",
|
485 | 495 | "\n",
|
| 496 | + "\n", |
486 | 497 | "ANSWER_PROMPT = (\n",
|
487 | 498 | " \"The original question is given below.\"\n",
|
488 | 499 | " \"This question has been used to retrieve information from a knowledge graph.\"\n",
|
|
494 | 505 | ")\n",
|
495 | 506 | "\n",
|
496 | 507 | "chain = (\n",
|
497 |
| - " { \"question\": RunnablePassthrough() }\n", |
498 |
| - " | RunnablePassthrough.assign(entities = extract_entities(llm))\n", |
499 |
| - " | RunnablePassthrough.assign(triples = itemgetter(\"entities\") | graph_store.as_runnable())\n", |
500 |
| - " | RunnablePassthrough.assign(context = itemgetter(\"triples\") | RunnableLambda(_combine_relations))\n", |
| 508 | + " {\"question\": RunnablePassthrough()}\n", |
| 509 | + " | RunnablePassthrough.assign(entities=extract_entities(llm))\n", |
| 510 | + " | RunnablePassthrough.assign(\n", |
| 511 | + " triples=itemgetter(\"entities\") | graph_store.as_runnable()\n", |
| 512 | + " )\n", |
| 513 | + " | RunnablePassthrough.assign(\n", |
| 514 | + " context=itemgetter(\"triples\") | RunnableLambda(_combine_relations)\n", |
| 515 | + " )\n", |
501 | 516 | " | ChatPromptTemplate.from_messages([ANSWER_PROMPT])\n",
|
502 | 517 | " | llm\n",
|
503 | 518 | ")"
|
|
0 commit comments