ChinaTravel: Ein praxisnaher Benchmark für Sprachagenten in der chinesischen Reiseplanung
Offizieller Codebestand für das Paper "ChinaTravel: Ein praxisnaher Benchmark für Sprachagenten in der chinesischen Reiseplanung".
🏆 IJCAI 2025 Reiseplanungs-Challenge (TPC@IJCAI)
Wir freuen uns bekannt zu geben, dass ChinaTravel als offizieller Benchmark für die Travel Planning Challenge (TPC) @ IJCAI 2025 ausgewählt wurde!
Offizielle Wettbewerbswebseite: https://chinatravel-competition.github.io/IJCAI2025/
Teilnehmer sind eingeladen, neuartige Agenten zu entwickeln, die reale Reiseplanungsszenarien unter komplexen Bedingungen bewältigen können. Dieser Wettbewerb präsentiert fortschrittliche Ansätze in der Forschung zu Sprachagenten.
📝 Änderungsprotokoll
2025.09
- Hochladen der Siegerlösung des TPC@IJCAI2025 DSL-Tracks. Vielen Dank an @evergreenee für die Beiträge.
2025.06
- Fehlerbehebung bei der Sammlung im Bewertungscode für Commonsense.
- Fehlerbehebung in der Pipeline des reinen Neuro-Agenten
- Fehlerbehebung beim Laden von Datensätzen von Huggingface
- Aktualisierung der Ausnahmebehandlung bei der Syntaxüberprüfung
2025.05
- Protokollieren Sie die Aktualisierungen für die neueste Version.
- Stellen Sie den Bewertungscode für das TPC bereit.
2025.04
- Lokaler Datenlader hinzugefügt. Benutzer können nun benutzerdefinierte Abfragen lokal laden. Bei Angabe von nicht standardmäßigen splits_name-Werten (z. B. "abc") für "run_exp.py" lädt das System automatisch entsprechende Dateien aus evaluation/default_splits/abc.txt, wobei die TXT-Datei die Dateinamen der Zielabfragen enthält.
- Detaillierte Klassifizierung von Einschränkungen. Siehe ausführliche Dokumentation unter Evaluation README
- LLM-Modulo-Baseline eingeführt
- Unterstützung für lokale LLM-Inferenz mit Qwen3-8B/4B.
🚀 Schnellstart
⚙️ Einrichtung
- Erstellen Sie eine Conda-Umgebung und installieren Sie die Abhängigkeiten:
conda create -n chinatravel python=3.9
conda activate chinatravel
pip install -r requirements.txt - Laden Sie die Datenbank herunter und entpacken Sie sie in das Verzeichnis "chinatravel/environment/"
- Laden Sie die Open-Source-LLMs herunter (optional).
bash download_llm.sh- Laden Sie die Tokenizer herunter.
wget https://cdn.deepseek.com/api-docs/deepseek_v3_tokenizer.zip -P chinatravel/local_llm/
unzip chinatravel/local_llm/deepseek_v3_tokenizer.zip -d chinatravel/local_llm/▶️ Ausführung
Wir unterstützen Deepseek (offizielle API von Deepseek), GPT-4o (chatgpt-4o-latest), GLM4-Plus und lokale Inferenz mit Qwen (Qwen3-8B), Llama, Mistral (Mistral-7B-Instruct-v0.3) usw.
export OPENAI_API_KEY=""python run_exp.py --splits easy --agent LLMNeSy --llm deepseek --oracle_translation
python run_exp.py --splits medium --agent LLMNeSy --llm deepseek --oracle_translation
python run_exp.py --splits human --agent LLMNeSy --llm deepseek --oracle_translation
python run_exp.py --splits human --agent LLMNeSy --llm Qwen3-8B --oracle_translation
python run_exp.py --splits human --agent LLMNeSy --llm deepseek
python run_exp.py --splits human --agent LLMNeSy --llm Qwen3-8B
python run_exp.py --splits human --agent LLM-modulo --llm deepseek --refine_steps 10 --oracle_translation
python run_exp.py --splits human --agent LLM-modulo --llm Qwen3-8B --refine_steps 10 --oracle_translation
Hinweis:
- Das Flag
--oracle_translationermöglicht den Zugriff auf annotierte Ground-Truth-Daten, einschließlich: hard_logic_py: Ausführbarer Verifizierungs-DSL-Codehard_logic_nl: Die entsprechenden Beschreibungen der Einschränkungen- Beispielstruktur der Annotation:
{
"hard_logic_py": [
"
total_cost=0
for activity in allactivities(plan):
total_cost+=activity_cost(activity)
total_cost += innercity_transport_cost(activity_transports(activity))
result=(total_cost<=1000)
",
"
innercity_transport_set=set()
for activity in allactivities(plan):
if activity_transports(activity)!=[]:
innercity_transport_set.add(innercity_transport_type(activity_transports(activity)))
result=(innercity_transport_set<={'taxi'})
"
],
"hard_logic_nl": ["总预算为1800元", "市内交通选择taxi"],
}
``
- Die LLM-Modulo-Methode erfordert den Oracle_Translation-Modus für ihren symbolischen Verfeinerungsprozess
📊 Bewertung
bash
python eval_exp.py --splits human --method LLMNeSy_deepseek_oracletranslation
python eval_exp.py --splits human --method LLMNeSy_deepseek
python eval_exp.py --splits human --method LLM-modulo_deepseek_10steps_oracletranslation
python eval_exp.py --splits human --method LLM-modulo_Qwen3-8B_10steps_oracletranslationbash python eval_tpc.py --splits tpc_phase1 --method YOUR_METHOD_NAMEIm TPC@IJCAI2025 wird der Bewertungscode in der Dateieval_tpc.pybereitgestellt. Sie können den Bewertungscode wie folgt ausführen:
python:chinatravel/agent/your_agent.py from .base import BaseAgentBaseAgent📚 Dokumentation
🛠️ Erweiterte Entwicklung
1. Entwickeln Sie Ihren eigenen Agenten-Algorithmus
Um Ihren eigenen Agenten-Algorithmus zu entwickeln, müssen Sie die Klasse
auschinatravel/agent/base.pyerben und die Logik für Ihren Algorithmus in die Funktioninit_agentinchinatravel/agent/load_model.pyeinfügen. Wir stellen ein Beispiel für einen leeren Agenten namensTPCAgentbereit.BaseAgentSchritte:
- Erben Sie die Klasse
: Erstellen Sie eine neue Python-Datei im Verzeichnischinatravel/agentund definieren Sie Ihre eigene Agentenklasse, indem Sie vonBaseAgenterben.
class YourAgent(BaseAgent): def __init__(self, kwargs): super().__init__(kwargs) # Initialization logic
def act(self, observation): # Implement the decision - making logic of the agent pass
- Fügen Sie Code zur Funktion init_agent hinzu: Öffnen Sie die Datei chinatravel/agent/load_model.py und fügen Sie Unterstützung für Ihren neuen Agenten in der Funktion init_agent hinzu.
python:
def init_agent(kwargs):
# ... existing code ...
elif kwargs["method"] == "YourMethodName":
agent = YourAgent(
kwargs
)
# ... existing code ...
return agent
2. Entwickeln Sie Ihr eigenes lokales LLM
Um Ihr eigenes lokales Large Language Model (LLM) zu entwickeln, müssen Sie die AbstractLLM-Klasse aus chinatravel/agent/llms.py erben und den entsprechenden lokalen LLM-Inferenzcode in llms.py hinzufügen. Wir stellen ein leeres LLM-Beispiel namens TPCLLM bereit.
Schritte:
- Erben Sie die AbstractLLM-Klasse: Definieren Sie Ihre eigene LLM-Klasse in der Datei chinatravel/agent/llms.py, indem Sie von AbstractLLM erben.
python
class YourLLM(AbstractLLM):
def __init__(self):
super().__init__()
# Initialization logic
self.name = "YourLLMName"def _get_response(self, messages, one_line, json_mode): # Implement the response logic of the LLM response = "Your LLM response" if json_mode: # Handle JSON mode pass elif one_line: # Handle one - line mode response = response.split("\n")[0] return response
- Fügen Sie Code zur Funktion init_agent hinzu: Öffnen Sie die Datei chinatravel/agent/load_model.py und fügen Sie Unterstützung für Ihr neues LLM in der Funktion init_llm hinzu.
python:
def init_llm(kwargs):
# ... existing code ...
elif llm_name == "glm4-plus":
llm = YourLLM()
# ... existing code ...
return llm
3. Führen Sie Ihren Code mit Experiment-Skripten aus
Nach Abschluss der oben genannten Entwicklung können Sie die Experiment-Skripte verwenden, um Ihren Code auszuführen.
Beispiel für die Ausführung:
bash
python run_tpc.py --splits easy --agent TPCAgent --llm TPCLLM
python run_exp.py --splits easy --agent YourMethodName --llm YourLLMName
@misc{shao2024chinatravelrealworldbenchmarklanguage, title={ChinaTravel: A Real-World Benchmark for Language Agents in Chinese Travel Planning}, author={Jie-Jing Shao and Xiao-Wen Yang and Bo-Wen Zhang and Baizhi Chen and Wen-Da Wei and Guohao Cai and Zhenhua Dong and Lan-Zhe Guo and Yu-feng Li}, year={2024}, eprint={2412.13682}, archivePrefix={arXiv}, primaryClass={cs.AI}, url={https://arxiv.org/abs/2412.13682}, } `` English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | ไทย | Français | Deutsch | Español | Italiano | Русский | Português | Nederlands | Polski | العربية | فارسی | Türkçe | Tiếng Việt | Bahasa Indonesia | অসমীয়াDie Ergebnisse werden im Verzeichnisresults/YourMethodName_YourLLMName_xxxgespeichert, z. B.results/TPCAgent_TPCLLM.✉️ Kontakt
Bei Problemen wenden Sie sich bitte an Jie-Jing Shao, Bo-Wen Zhang, Xiao-Wen Yang.
📌 Zitation
Wenn unsere Arbeit oder verwandte Ressourcen für Ihre Forschung wertvoll sind, bitten wir um eine entsprechende Zitation.
--- Tranlated By Open Ai Tx | Last indexed: 2025-10-17 ---