add codes from guides to a separate folder

This commit is contained in:
Milenko Gavric 2026-01-15 15:25:26 +01:00
parent 8a96a351e2
commit ae6b2d196e
11 changed files with 410 additions and 0 deletions

View file

@ -0,0 +1,38 @@
import asyncio
from typing import Any
from pydantic import SkipValidation
import cognee
from cognee.infrastructure.engine import DataPoint
from cognee.infrastructure.engine.models.Edge import Edge
from cognee.tasks.storage import add_data_points
class Person(DataPoint):
name: str
# Keep it simple for forward refs / mixed values
knows: SkipValidation[Any] = None # single Person or list[Person]
# Recommended: specify which fields to index for search
metadata: dict = {"index_fields": ["name"]}
async def main():
# Start clean (optional in your app)
await cognee.prune.prune_data()
await cognee.prune.prune_system(metadata=True)
alice = Person(name="Alice")
bob = Person(name="Bob")
charlie = Person(name="Charlie")
# Create relationships - field name becomes edge label
alice.knows = bob
# You can also do lists: alice.knows = [bob, charlie]
# Optional: add weights and custom relationship types
bob.knows = (Edge(weight=0.9, relationship_type="friend_of"), charlie)
await add_data_points([alice, bob, charlie])
asyncio.run(main())

30
guides/custom_prompts.py Normal file
View file

@ -0,0 +1,30 @@
import asyncio
import cognee
from cognee.api.v1.search import SearchType
custom_prompt = """
Extract only people and cities as entities.
Connect people to cities with the relationship "lives_in".
Ignore all other entities.
"""
async def main():
await cognee.add(
[
"Alice moved to Paris in 2010, while Bob has always lived in New York.",
"Andreas was born in Venice, but later settled in Lisbon.",
"Diana and Tom were born and raised in Helsingy. Diana currently resides in Berlin, while Tom never moved.",
]
)
await cognee.cognify(custom_prompt=custom_prompt)
res = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="Where does Alice live?",
)
print(res)
if __name__ == "__main__":
asyncio.run(main())

View file

@ -0,0 +1,53 @@
import asyncio
from typing import Any, Dict, List
from pydantic import BaseModel, SkipValidation
import cognee
from cognee.modules.engine.operations.setup import setup
from cognee.infrastructure.llm.LLMGateway import LLMGateway
from cognee.infrastructure.engine import DataPoint
from cognee.tasks.storage import add_data_points
from cognee.modules.pipelines import Task, run_pipeline
class Person(DataPoint):
name: str
# Optional relationships (we'll let the LLM populate this)
knows: List["Person"] = []
# Make names searchable in the vector store
metadata: Dict[str, Any] = {"index_fields": ["name"]}
class People(BaseModel):
persons: List[Person]
async def extract_people(text: str) -> List[Person]:
system_prompt = (
"Extract people mentioned in the text. "
"Return as `persons: Person[]` with each Person having `name` and optional `knows` relations. "
"If the text says someone knows someone set `knows` accordingly. "
"Only include facts explicitly stated."
)
people = await LLMGateway.acreate_structured_output(text, system_prompt, People)
return people.persons
async def main():
await cognee.prune.prune_data()
await cognee.prune.prune_system(metadata=True)
await setup()
text = "Alice knows Bob."
tasks = [
Task(extract_people), # input: text -> output: list[Person]
Task(add_data_points), # input: list[Person] -> output: list[Person]
]
async for _ in run_pipeline(tasks=tasks, data=text, datasets=["people_demo"]):
pass
if __name__ == "__main__":
asyncio.run(main())

View file

@ -0,0 +1,13 @@
import asyncio
import cognee
from cognee.api.v1.visualize.visualize import visualize_graph
async def main():
await cognee.add(["Alice knows Bob.", "NLP is a subfield of CS."])
await cognee.cognify()
await visualize_graph("./graph_after_cognify.html")
asyncio.run(main())

31
guides/low_level_llm.py Normal file
View file

@ -0,0 +1,31 @@
import asyncio
from pydantic import BaseModel
from typing import List
from cognee.infrastructure.llm.LLMGateway import LLMGateway
class MiniEntity(BaseModel):
name: str
type: str
class MiniGraph(BaseModel):
nodes: List[MiniEntity]
async def main():
system_prompt = (
"Extract entities as nodes with name and type. "
"Use concise, literal values present in the text."
)
text = "Apple develops iPhone; Audi produces the R8."
result = await LLMGateway.acreate_structured_output(text, system_prompt, MiniGraph)
print(result)
# MiniGraph(nodes=[MiniEntity(name='Apple', type='Organization'), ...])
if __name__ == "__main__":
asyncio.run(main())

View file

@ -0,0 +1,29 @@
import asyncio
import cognee
from cognee import SearchType
async def main():
# 1) Add two short chats and build a graph
await cognee.add(
[
"We follow PEP8. Add type hints and docstrings.",
"Releases should not be on Friday. Susan must review PRs.",
],
dataset_name="rules_demo",
)
await cognee.cognify(datasets=["rules_demo"]) # builds graph
# 2) Enrich the graph (uses default memify tasks)
await cognee.memify(dataset="rules_demo")
# 3) Query the new coding rules
rules = await cognee.search(
query_type=SearchType.CODING_RULES,
query_text="List coding rules",
node_name=["coding_agent_rules"],
)
print("Rules:", rules)
asyncio.run(main())

View file

@ -0,0 +1,30 @@
import asyncio
import cognee
async def main():
texts = ["Audi produces the R8 and e-tron.", "Apple develops iPhone and MacBook."]
await cognee.add(texts)
# or: await cognee.add("/path/to/folder/of/files")
import os
from cognee.modules.ontology.ontology_config import Config
from cognee.modules.ontology.rdf_xml.RDFLibOntologyResolver import RDFLibOntologyResolver
ontology_path = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "ontology_input_example/basic_ontology.owl"
)
# Create full config structure manually
config: Config = {
"ontology_config": {
"ontology_resolver": RDFLibOntologyResolver(ontology_file=ontology_path)
}
}
await cognee.cognify(config=config)
if __name__ == "__main__":
asyncio.run(main())

25
guides/s3_storage.py Normal file
View file

@ -0,0 +1,25 @@
import asyncio
import cognee
async def main():
# Single file
await cognee.add("s3://cognee-s3-small-test/Natural_language_processing.txt")
# Folder/prefix (recursively expands)
await cognee.add("s3://cognee-s3-small-test")
# Mixed list
await cognee.add(
[
"s3://cognee-s3-small-test/Natural_language_processing.txt",
"Some inline text to ingest",
]
)
# Process the data
await cognee.cognify()
if __name__ == "__main__":
asyncio.run(main())

58
guides/search_basics.py Normal file
View file

@ -0,0 +1,58 @@
import asyncio
import cognee
from cognee.modules.search.types import SearchType, CombinedSearchResult
async def main():
await cognee.prune.prune_data()
await cognee.prune.prune_system(metadata=True)
text = """
Natural language processing (NLP) is an interdisciplinary
subfield of computer science and information retrieval.
First rule of coding: Do not talk about coding.
"""
text2 = """
Sandwiches are best served toasted with cheese, ham, mayo,
lettuce, mustard, and salt & pepper.
"""
await cognee.add(text, dataset_name="NLP_coding")
await cognee.add(text2, dataset_name="Sandwiches")
await cognee.add(text2)
await cognee.cognify()
# Make sure you've already run cognee.cognify(...) so the graph has content
answers = await cognee.search(query_text="What are the main themes in my data?")
assert len(answers) > 0
answers = await cognee.search(
query_text="List coding guidelines",
query_type=SearchType.CODING_RULES,
)
assert len(answers) > 0
answers = await cognee.search(
query_text="Give me a confident answer: What is NLP?",
system_prompt="Answer succinctly and state confidence at the end.",
)
assert len(answers) > 0
answers = await cognee.search(
query_text="Tell me about NLP",
only_context=True,
)
assert len(answers) > 0
answers = await cognee.search(
query_text="Quarterly financial highlights",
datasets=["NLP_coding", "Sandwiches"],
use_combined_context=True,
)
assert isinstance(answers, CombinedSearchResult)
asyncio.run(main())

46
guides/sessions.py Normal file
View file

@ -0,0 +1,46 @@
import asyncio
import cognee
from cognee import SearchType
from cognee.modules.users.methods import get_default_user
from cognee.context_global_variables import set_session_user_context_variable
async def main():
# Prepare knowledge base
await cognee.add([
"Alice moved to Paris in 2010. She works as a software engineer.",
"Bob lives in New York. He is a data scientist.",
"Alice and Bob met at a conference in 2015."
])
await cognee.cognify()
# Set user context (required for sessions)
user = await get_default_user()
await set_session_user_context_variable(user)
# First search - starts a new session
result1 = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="Where does Alice live?",
session_id="conversation_1"
)
print("First answer:", result1[0])
# Follow-up search - uses conversation history
result2 = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="What does she do for work?",
session_id="conversation_1" # Same session
)
print("Follow-up answer:", result2[0])
# The LLM knows "she" refers to Alice from previous context
# Different session - no memory of previous conversation
result3 = await cognee.search(
query_type=SearchType.GRAPH_COMPLETION,
query_text="What does she do for work?",
session_id="conversation_2" # New session
)
print("New session answer:", result3[0])
# This won't know who "she" refers to
asyncio.run(main())

View file

@ -0,0 +1,57 @@
import asyncio
import cognee
async def main():
text = """
In 1998 the project launched. In 2001 version 1.0 shipped. In 2004 the team merged
with another group. In 2010 support for v1 ended.
"""
await cognee.add(text, dataset_name="timeline_demo")
await cognee.cognify(datasets=["timeline_demo"], temporal_cognify=True)
from cognee.api.v1.search import SearchType
# Before / after queries
result = await cognee.search(
query_type=SearchType.TEMPORAL, query_text="What happened before 2000?", top_k=10
)
assert result != []
result = await cognee.search(
query_type=SearchType.TEMPORAL, query_text="What happened after 2010?", top_k=10
)
assert result != []
# Between queries
result = await cognee.search(
query_type=SearchType.TEMPORAL, query_text="Events between 2001 and 2004", top_k=10
)
assert result != []
# Scoped descriptions
result = await cognee.search(
query_type=SearchType.TEMPORAL,
query_text="Key project milestones between 1998 and 2010",
top_k=10,
)
assert result != []
result = await cognee.search(
query_type=SearchType.TEMPORAL,
query_text="What happened after 2004?",
datasets=["timeline_demo"],
top_k=10,
)
assert result != []
if __name__ == "__main__":
asyncio.run(main())