[bugfix] BaseExperience -> TextExperience

This commit is contained in:
jinli.yl 2025-07-24 20:59:45 +08:00
parent e7edb395e6
commit 2bc5a6d67a
9 changed files with 255 additions and 9 deletions

3
.gitignore vendored
View file

@ -26,4 +26,5 @@ build/*
*.egg-info/*
cookbook/appworld/data/*
cookbook/appworld/experiments/*
cookbook/appworld/exp_result/*
cookbook/appworld/exp_result/*
file_vector_store/*

View file

@ -21,7 +21,7 @@
## 📰 What's New
- **[2025-08]** 🎉 ExperienceMaker v0.1.0 is now available on [PyPI](https://pypi.org/project/experiencemaker/)!
- **[2025-07]** 📚 Complete documentation and quick start guides released
- **[2025-07]** 🚀 Multi-backend vector store support (Elasticsearch & ChromaDB)
- **[2025-06]** 🚀 Multi-backend vector store support (Elasticsearch & ChromaDB)
---

View file

@ -55,3 +55,4 @@ Enable AI to naturally become stronger through everyday work, rather than wastin
- [ ] refine readme @jinli
- [ ] integrate into beyond-agent @jinli
- [ ] rm workspace_id in code

File diff suppressed because one or more lines are too long

View file

View file

@ -65,7 +65,7 @@ class FailureExtractionOp(BaseOp):
experiences = []
for exp_data in experiences_data:
experience = BaseExperience(
experience: BaseExperience = TextExperience(
workspace_id=self.context.request.workspace_id,
when_to_use=exp_data.get("when_to_use", exp_data.get("condition", "")),
content=exp_data.get("experience", ""),

View file

@ -7,7 +7,7 @@ from loguru import logger
from experiencemaker.enumeration.role import Role
from experiencemaker.op import OP_REGISTRY
from experiencemaker.op.base_op import BaseOp
from experiencemaker.schema.experience import BaseExperience, ExperienceMeta
from experiencemaker.schema.experience import BaseExperience, ExperienceMeta, TextExperience
from experiencemaker.schema.message import Message, Trajectory
from experiencemaker.schema.response import SummarizerResponse
from experiencemaker.utils.op_utils import merge_messages_content, parse_json_experience_response, get_trajectory_context
@ -59,12 +59,12 @@ class SuccessExtractionOp(BaseOp):
outcome="successful"
)
def parse_experiences(message: Message) -> List[BaseExperience]:
def parse_experiences(message: Message) -> List[TextExperience]:
experiences_data = parse_json_experience_response(message.content)
experiences = []
for exp_data in experiences_data:
experience = BaseExperience(
experience = TextExperience(
workspace_id=self.context.request.workspace_id,
when_to_use=exp_data.get("when_to_use", exp_data.get("condition", "")),
content=exp_data.get("experience", ""),

View file

@ -1,7 +1,9 @@
import datetime
from abc import ABC
from typing import List
from uuid import uuid4
from loguru import logger
from pydantic import BaseModel, Field
from experiencemaker.schema.vector_node import VectorNode
@ -17,7 +19,7 @@ class ExperienceMeta(BaseModel):
self.modified_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
class BaseExperience(BaseModel):
class BaseExperience(BaseModel, ABC):
workspace_id: str = Field(default="")
experience_id: str = Field(default_factory=lambda: uuid4().hex)
@ -101,8 +103,8 @@ def vector_node_to_experience(node: VectorNode) -> BaseExperience:
return KnowledgeExperience.from_vector_node(node)
else:
raise RuntimeError(f"experience type {experience_type} not supported")
logger.warning(f"experience type {experience_type} not supported")
return TextExperience.from_vector_node(node)
if __name__ == "__main__":
e1 = TextExperience(