Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "vS5M-x8G7jV2"
},
"outputs": [],
"source": [
"!pip install -qU openai tiktoken langchain_openai pydantic_settings"
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"\n",
"os.environ[\"OPENAI_API_KEY\"] = \"...\"\n",
"os.environ[\"OPENAI_API_BASE\"] = \"...\""
],
"metadata": {
"id": "n-816XuR8Bwg"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from experiments.exp2025_03_27_create_graphs_by_keys.keys2graph.pipeline import Pipeline\n",
"import json\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
],
"metadata": {
"id": "ina5eQDt8OV7"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"key_list = [\"topic\", \"sub_topic\", \"bot_goal\", \"success_criteria\", \"context_info\", \"language\", \"formality_level\", \"emotional_tone\", \"lexical_diversity\", \"use_of_jargon\",\n",
"\"max_dialog_depth\", \"max_branching_factor\", \"mandatory_nodes\", \"optional_nodes\", \"start_node\", \"user_intents\", \"intent_hierarchy\", \"required_slots\",\n",
"\"follow_up_questions\", \"fallback_strategy\", \"confirmation_needed\", \"max_dialog_length\", \"alternate_paths\", \"escalation_policy\", \"user_feedback_collection\",\n",
"\"user_persona\", \"dynamic_content\"]"
],
"metadata": {
"id": "KGwz8DxY7oVZ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#remove keys for the experiment\n",
"key_list.remove(\"mandatory_nodes\")"
],
"metadata": {
"id": "kMA7M1z77tXp"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"ROOT = \"/content/experiments/exp2025_03_27_create_graphs_by_keys\"\n",
"src_graphs = f\"{ROOT}/test_original_graphs/graphs_level_1.json\"\n",
"similar_json = f\"{ROOT}/triplet_similarity.json\""
],
"metadata": {
"id": "Q7PeZPWw73rn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"pipe = Pipeline()"
],
"metadata": {
"id": "wyD-XTTJ8QqL"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#select a file with original dialog graphs\n",
"all_data = pipe.load_dialog_graphs(src_graphs)"
],
"metadata": {
"id": "WtivXnRx8gqI"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#load annotated data (if it's ready)\n",
"with open(\"/content/annotated_data.json\", encoding=\"utf-8\") as f:\n",
" pipe._original_graphs_annotation = json.load(f)"
],
"metadata": {
"id": "qmKxNvST8eqc"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#select original dialog graphs: \"all\" or list if ids\n",
"test_graphs = pipe.add_graphs_to_test(\"all\", src_graphs)"
],
"metadata": {
"id": "ug1TFTOa8vSy"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# generate graphs by keys and save data\n",
"gen_out = \"generated_data.json\"\n",
"pipe.generate_graphs_by_keys(\n",
" #keys=[\"topic\", \"sub_topic\"], # or \"all\"\n",
" keys=key_list,\n",
" model_name=\"o1-mini\",\n",
" temperature=0.0, #set 0 for \"o1-mini\"\n",
" output_file=gen_out\n",
")"
],
"metadata": {
"id": "vUTpKbD28_-W"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#calculate metrics\n",
"pipe.calculate_graphs_similarity(similar_json)"
],
"metadata": {
"id": "ie8gXaZZ-PMf"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#metrics visualisation\n",
"with open(similar_json, encoding=\"utf-8\") as f:\n",
" data = json.load(f)\n",
"\n",
"similarity_values = [p[\"similarity_avg\"] for p in data.get(\"pairs\", [])]\n",
"\n",
"mean_val = np.mean(similarity_values) if similarity_values else 0.0\n",
"var_val = np.var(similarity_values) if similarity_values else 0.0\n",
"\n",
"print(f\"Average similarity_avg : {mean_val:.4f}\")\n",
"print(f\"Dispersion : {var_val:.6f}\")\n",
"\n",
"plt.figure(figsize=(8, 4))\n",
"bins = max(5, min(10, len(similarity_values)//2 or 5))\n",
"plt.hist(similarity_values,\n",
" bins=bins,\n",
" edgecolor=\"black\", # контур столбца\n",
" linewidth=1.2,\n",
" alpha=0.85)\n",
"plt.title(\"Distribution of similarity_avg across graph pairs\")\n",
"plt.xlabel(\"similarity_avg\")\n",
"plt.ylabel(\"Frequency\")\n",
"plt.tight_layout()\n",
"plt.show()\n"
],
"metadata": {
"id": "BLqeOzB3-VQg"
},
"execution_count": null,
"outputs": []
}
]
}
Loading
Loading