mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
- Robust ID extraction in CentralityCalculator, CommunityDetector, and ConnectivityAnalyzer - Support for direct Entity objects and dictionaries as node identifiers - Improved Entity hashability in utils/types.py - Added integration test to verify fix and prevent regression
85 lines
3.1 KiB
Python
85 lines
3.1 KiB
Python
|
|
import os
|
|
import sys
|
|
import json
|
|
from pprint import pprint
|
|
|
|
# Ensure the package is in the path
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
|
|
|
from semantica.semantic_extract.methods import (
|
|
extract_entities_llm,
|
|
extract_relations_llm,
|
|
extract_triplets_llm
|
|
)
|
|
from semantica.semantic_extract.providers import create_provider
|
|
from semantica.utils.exceptions import ProcessingError
|
|
|
|
# Set the API key
|
|
# Set the API key from environment
|
|
# We recommend setting it as an environment variable GROQ_API_KEY
|
|
if not os.environ.get("GROQ_API_KEY"):
|
|
print("Warning: GROQ_API_KEY not set. Test will likely fail.")
|
|
|
|
def test_groq_all():
|
|
text = "Apple Inc. was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne in 1976. It is headquartered in Cupertino, California. The company designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories."
|
|
|
|
print("--- Testing Groq Provider Availability ---")
|
|
try:
|
|
provider = create_provider("groq")
|
|
available = provider.is_available()
|
|
print(f"Groq Available: {available}")
|
|
if not available:
|
|
print("Error: Groq is not available. Check library installation or API key.")
|
|
return
|
|
except Exception as e:
|
|
print(f"Error checking provider: {e}")
|
|
return
|
|
|
|
print("\n--- Testing Entity Extraction ---")
|
|
try:
|
|
entities = extract_entities_llm(text, provider="groq", model="llama-3.3-70b-versatile")
|
|
print(f"Extracted {len(entities)} entities:")
|
|
pprint(entities)
|
|
except Exception as e:
|
|
print(f"Entity extraction failed: {e}")
|
|
|
|
print("\n--- Testing Relation Extraction ---")
|
|
try:
|
|
# Use a few entities for relation extraction
|
|
from semantica.semantic_extract.models import Entity
|
|
sample_entities = [
|
|
Entity(name="Apple Inc.", type="ORGANIZATION"),
|
|
Entity(name="Steve Jobs", type="PERSON")
|
|
]
|
|
relations = extract_relations_llm(text, entities=sample_entities, provider="groq", model="llama-3.3-70b-versatile")
|
|
print(f"Extracted {len(relations)} relations:")
|
|
pprint(relations)
|
|
except Exception as e:
|
|
print(f"Relation extraction failed: {e}")
|
|
|
|
print("\n--- Testing Triplet Extraction ---")
|
|
try:
|
|
triplets = extract_triplets_llm(text, provider="groq", model="llama-3.3-70b-versatile")
|
|
print(f"Extracted {len(triplets)} triplets:")
|
|
pprint(triplets)
|
|
except Exception as e:
|
|
print(f"Triplet extraction failed: {e}")
|
|
|
|
print("\n--- Testing Auto-Chunking ---")
|
|
long_text = " ".join([text] * 10) # Roughly 1000-1500 tokens
|
|
try:
|
|
entities_chunked = extract_entities_llm(
|
|
long_text,
|
|
provider="groq",
|
|
model="llama-3.3-70b-versatile",
|
|
max_text_length=200 # Force chunking
|
|
)
|
|
print(f"Extracted {len(entities_chunked)} entities from long text (chunked):")
|
|
# Just show count to avoid clutter
|
|
except Exception as e:
|
|
print(f"Chunked extraction failed: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
test_groq_all()
|