initial commit
This commit is contained in:
commit
aaba8753ef
36 changed files with 3682 additions and 0 deletions
124
src/examples/test_history_parsing.py
Normal file
124
src/examples/test_history_parsing.py
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify chat history parsing with actual talestorm-ai format
|
||||
"""
|
||||
|
||||
from src.services.chat_service import ChatService
|
||||
from src.api.v1.models import HistoryItem
|
||||
|
||||
# Sample data from talestorm-ai
|
||||
sample_history = [
|
||||
{
|
||||
"id": "45d3e5f0-21cf-47b3-8c24-0d273107ab7f",
|
||||
"chat_session_id": "f250bb60-d619-4802-914f-0594d2a52bfa",
|
||||
"content": [
|
||||
{
|
||||
"parts": [
|
||||
{
|
||||
"content": "hi",
|
||||
"timestamp": "2025-07-25T09:49:29.412466Z",
|
||||
"part_kind": "user-prompt"
|
||||
}
|
||||
],
|
||||
"instructions": "You are an expert insurance assistant. You may only answer questions about insurance plans, coverage, benefits, and related terms. If asked anything outside that domain, reply: 'I'm sorry, I can only answer insurance-related questions.'",
|
||||
"kind": "request"
|
||||
},
|
||||
{
|
||||
"parts": [
|
||||
{
|
||||
"content": "Hello! How can I assist you with your insurance questions today?",
|
||||
"part_kind": "text"
|
||||
}
|
||||
],
|
||||
"usage": {
|
||||
"requests": 1,
|
||||
"request_tokens": 137,
|
||||
"response_tokens": 14,
|
||||
"total_tokens": 151,
|
||||
"details": {
|
||||
"accepted_prediction_tokens": 0,
|
||||
"audio_tokens": 0,
|
||||
"reasoning_tokens": 0,
|
||||
"rejected_prediction_tokens": 0,
|
||||
"cached_tokens": 0
|
||||
}
|
||||
},
|
||||
"model_name": "gpt-4.1-mini-2025-04-14",
|
||||
"timestamp": "2025-07-25T09:49:30Z",
|
||||
"kind": "response",
|
||||
"vendor_details": None,
|
||||
"vendor_id": "chatcmpl-Bx9LOZPgBbHOblSUd6LcuV3qIYEwz"
|
||||
}
|
||||
],
|
||||
"created_at": "2025-07-25T09:40:20.797430"
|
||||
}
|
||||
]
|
||||
|
||||
def parse_history_manually(messages):
|
||||
"""Manually parse the history to test our logic"""
|
||||
history = []
|
||||
|
||||
for message in messages:
|
||||
content = message.get("content", [])
|
||||
|
||||
for item in content:
|
||||
if not isinstance(item, dict):
|
||||
continue
|
||||
|
||||
kind = item.get("kind", "")
|
||||
|
||||
# Handle request messages (user input)
|
||||
if kind == "request":
|
||||
parts = item.get("parts", [])
|
||||
for part in parts:
|
||||
if part.get("part_kind") == "user-prompt":
|
||||
history.append(HistoryItem(
|
||||
role="user",
|
||||
message=part.get("content", "")
|
||||
))
|
||||
|
||||
# Handle response messages (assistant output)
|
||||
elif kind == "response":
|
||||
parts = item.get("parts", [])
|
||||
for part in parts:
|
||||
if part.get("part_kind") == "text":
|
||||
history.append(HistoryItem(
|
||||
role="assistant",
|
||||
message=part.get("content", "")
|
||||
))
|
||||
|
||||
return history
|
||||
|
||||
def test_history_parsing():
|
||||
"""Test the history parsing logic"""
|
||||
print("Testing History Parsing...")
|
||||
print("=" * 50)
|
||||
|
||||
# Parse the sample history
|
||||
history = parse_history_manually(sample_history)
|
||||
|
||||
print(f"Found {len(history)} history items:")
|
||||
for i, item in enumerate(history, 1):
|
||||
print(f" {i}. {item.role}: {item.message}")
|
||||
|
||||
# Verify the expected results
|
||||
expected_user_message = "hi"
|
||||
expected_assistant_message = "Hello! How can I assist you with your insurance questions today?"
|
||||
|
||||
if len(history) == 2:
|
||||
if history[0].role == "user" and history[0].message == expected_user_message:
|
||||
print("✅ User message parsed correctly")
|
||||
else:
|
||||
print("❌ User message parsing failed")
|
||||
|
||||
if history[1].role == "assistant" and history[1].message == expected_assistant_message:
|
||||
print("✅ Assistant message parsed correctly")
|
||||
else:
|
||||
print("❌ Assistant message parsing failed")
|
||||
else:
|
||||
print(f"❌ Expected 2 history items, got {len(history)}")
|
||||
|
||||
print("\n✅ History parsing test completed!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_history_parsing()
|
||||
Loading…
Add table
Add a link
Reference in a new issue