Skip to content

powerofdarkine/https-github.com-powerofdarkine-lifelong-feedback

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lifelong Feedback (AI2-THOR + LLM + KG)

Project này triển khai một pipeline đơn giản cho:

  • LLM làm planner cho agent trong AI2-THOR
  • Double-Feedback (feasibility + effect)
  • Knowledge Graph (KG) tích lũy lâu dài từ feedback
  • So sánh 2 chế độ: no_kg vs with_kg

1. Cấu trúc thư mục

.
├─ config/
│   └─ k_config.yaml         # (hiện tại chưa dùng, có thể để task config sau)
├─ data/
│   ├─ logs/                 # log file sẽ được ghi vào đây
│   └─ kg_memory.json        # file KG (tự tạo / tự cập nhật)
├─ env/
│   ├─ ai2thor_controller.py
│   └─ state_tracker.py
├─ eval/
│   ├─ evaluator.py
│   └─ metrics.py
├─ knowledge/
│   ├─ kg_retriever.py
│   ├─ kg_store.py
│   └─ kg_updater.py
├─ planner/
│   ├─ double_feedback_controller.py
│   ├─ feedback_parser.py
│   ├─ llm_interface.py
│   └─ prompt_generator.py
├─ utils/
│   ├─ logger.py
│   └─ tools.py
├─ main.py                   # demo Phase 0: LLM planner đơn giản
└─ main_eval.py              # chạy eval 2 mode: no_kg vs with_kg


#  2. Cài đặt môi trường
##2.1. Tạo virtualenv (khuyến nghị)

```bash
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate
```bash
##2.2. Cài dependencies

Tối thiểu cần:

ai2thor

openai

pyyaml (cho utils/tools.py nếu dùng load YAML)

Bạn có thể tạo file requirements.txt như sau:

ai2thor
openai
pyyaml


Sau đó:
```bash
pip install -r requirements.txt

Hoặc cài trực tiếp:

pip install ai2thor openai pyyaml

##2.3. API key cho OpenAI

Đặt biến môi trường OPENAI_API_KEY:

Linux / macOS (bash/zsh):

export OPENAI_API_KEY="sk-...."

Windows PowerShell:

$Env:OPENAI_API_KEY="sk-...."

3. Chạy demo cơ bản (Phase 0)

main.py chạy pipeline đơn giản:

Khởi tạo AI2-THOR

Gọi LLM để sinh 1 plan (JSON actions)

Thực thi tuần tự, không Double-Feedback, không KG.

Chạy:

python main.py
```bash

Bạn sẽ thấy:

Prompt gửi cho LLM

Raw JSON plan LLM trả về

Các action được thực thi và state agent sau mỗi bước

# 4. Chạy evaluation 2 mode (no_kg vs with_kg)

main_eval.py dùng:

eval/evaluator.py

eval/metrics.py

planner/double_feedback_controller.py

knowledge/*

env/state_tracker.py

Đây là pipeline:

Tạo một list TaskSpec (được định nghĩa sẵn trong build_tasks()).

Chạy tất cả task ở mode:

no_kg: KG không tích lũy giữa các task.

with_kg: KG được tích lũy từ feedback qua các task.

Tổng hợp metrics (success rate, avg steps, v.v.) và in report.

Chạy:

```bash
python main_eval.py

Output sẽ có dạng:

========== Running tasks WITHOUT lifelong KG (no_kg) ========== [Evaluator] Running no_kg_task_0: goal='...' ...

========== Running tasks WITH lifelong KG (with_kg) ========== [Evaluator] Running with_kg_task_0: goal='...' ...

=== Aggregate Metrics Report ===

Mode: no_kg #Tasks: ... Success rate: ... Avg steps (all): ... ...

Mode: with_kg #Tasks: ... Success rate: ... Avg steps (all): ... ...

  1. Ghi log & KG

Log text được ghi vào: data/logs/*.log (từ utils/logger.py nếu bạn dùng).

KG lâu dài được lưu trong: data/kg_memory_lifelong.json (mode with_kg trong evaluator) hoặc data/kg_memory.json (nếu bạn dùng KnowledgeGraphStore mặc định).

Bạn có thể mở file KG để xem các triple dạng:

{ "facts": [ { "subject": "Pot", "relation": "RequiresTwoHands", "object": "True", "source": "feedback", "timestamp": 1733012345.123 } ] }

  1. Tuỳ chỉnh tasks

Hiện tại, các task được định nghĩa ngay trong main_eval.py:

tasks = [ TaskSpec(goal="Pick up an apple and place it in the fridge.", scene="FloorPlan1"), TaskSpec(goal="Turn on the microwave and heat a mug.", scene="FloorPlan1"), ... ]

Muốn thêm / sửa task, bạn chỉ cần chỉnh danh sách này.

Sau này nếu muốn config qua YAML (config/k_config.yaml) thì có thể viết một script riêng đọc YAML và build TaskSpec từ đó.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages