Update README.md
This commit is contained in:
35
main.py
35
main.py
@@ -13,13 +13,17 @@ neo4j = Neo4j(
|
||||
password=os.getenv("NEO4J_PASSWORD"),
|
||||
)
|
||||
|
||||
|
||||
class CypherFromText(dspy.Signature):
|
||||
"""Instructions:
|
||||
Create a Cypher MERGE statement to model all entities and relationships found in the text following these guidelines:
|
||||
- Refer to the provided schema and use existing or similar nodes, properties or relationships before creating new ones.
|
||||
- Use generic categories for node and relationship labels."""
|
||||
text = dspy.InputField(
|
||||
desc="Text to model using nodes, properties and relationships."
|
||||
"""Task: Generate Cypher statement to query a graph database.
|
||||
Instructions: Use only the provided relationship types and properties in the schema.
|
||||
Do not use any other relationship types or properties that are not provided in the schema.
|
||||
Do not include any explanations or apologies in your responses.
|
||||
Do not respond to any questions that might ask anything else than for you to construct a Cypher statement.
|
||||
Do not include any text except the generated Cypher statement.
|
||||
"""
|
||||
question = dspy.InputField(
|
||||
desc="Question to model using a cypher statement."
|
||||
)
|
||||
neo4j_schema = dspy.InputField(
|
||||
desc="Current graph schema in Neo4j as a list of NODES and RELATIONSHIPS."
|
||||
@@ -28,10 +32,11 @@ class CypherFromText(dspy.Signature):
|
||||
desc="Cypher statement to merge nodes and relationships found in the text."
|
||||
)
|
||||
|
||||
|
||||
class GenerateCypherConfig(PrecompiledConfig):
|
||||
model: str = "openai/gpt-4o"
|
||||
max_tokens: int = 1024
|
||||
|
||||
|
||||
|
||||
class GenerateCypher(PrecompiledProgram):
|
||||
config: GenerateCypherConfig
|
||||
@@ -44,16 +49,18 @@ class GenerateCypher(PrecompiledProgram):
|
||||
)
|
||||
self.generate_cypher = dspy.ChainOfThought(CypherFromText)
|
||||
self.generate_cypher.set_lm(self.lm)
|
||||
|
||||
|
||||
def forward(self, text: str, neo4j_schema: list[str]):
|
||||
return self.generate_cypher(text=text, neo4j_schema=neo4j_schema)
|
||||
|
||||
|
||||
generate_cypher = GenerateCypher(GenerateCypherConfig())
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""
|
||||
from pathlib import Path
|
||||
import json
|
||||
"""
|
||||
|
||||
examples_path = Path(__file__).parent / "examples" / "wikipedia-abstracts-v0_0_1.ndjson"
|
||||
with open(examples_path, "r") as f:
|
||||
for line in f:
|
||||
@@ -67,7 +74,9 @@ if __name__ == "__main__":
|
||||
schema = neo4j.fmt_schema()
|
||||
print("SCHEMA:\n", schema)
|
||||
"""
|
||||
generate_cypher.push_to_hub("farouk1/text-to-cypher", with_code=True, tag="v0.0.7", commit_message="Update README.md")
|
||||
|
||||
|
||||
|
||||
generate_cypher.push_to_hub(
|
||||
"farouk1/text-to-cypher",
|
||||
with_code=True,
|
||||
tag="v0.0.8",
|
||||
commit_message="Update README.md",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user