ChinaTravel: Een Real-World Benchmark voor Taalagenten in Chinese Reisplanning
Officiële codebasis voor het artikel "ChinaTravel: Een Real-World Benchmark voor Taalagenten in Chinese Reisplanning".
🏆 IJCAI 2025 Reisplanningsuitdaging (TPC@IJCAI)
We zijn trots om aan te kondigen dat ChinaTravel is geselecteerd als de officiële benchmark voor de Reisplanningsuitdaging (TPC) @ IJCAI 2025!
Officiële competitie-website: https://chinatravel-competition.github.io/IJCAI2025/
Deelnemers worden uitgenodigd om nieuwe agenten te ontwikkelen die echte reisplanningsscenario’s onder complexe randvoorwaarden aankunnen. Deze competitie toont de nieuwste benaderingen in taalagentonderzoek.
📝 Wijzigingslog
2025.09
- Upload de winnende oplossing van TPC@IJCAI2025 DSL-track. Dank aan @evergreenee voor hun bijdrage.
2025.06
- Foutcorrectie bij het verzamelen van fouten in de evaluatiecode voor common sense.
- Foutcorrectie in de pipeline van de pure-neuro agent.
- Foutcorrectie voor load_datasets vanuit huggingface.
- Update van de exceptieafhandeling in syntaxisverificatie.
2025.05
- Update logs voor de nieuwste versie.
- Voorzie de evaluatiecode voor de TPC.
2025.04
- Lokale data loader toegevoegd. Gebruikers kunnen nu aangepaste queries lokaal laden. Bij het specificeren van niet-standaardwaarden voor splits_name (bijv. "abc") voor "run_exp.py", zal het systeem automatisch bijbehorende bestanden laden uit evaluation/default_splits/abc.txt, waarbij het TXT-bestand de doelfilenaam van de query bevat.
- Gedetailleerde classificatie van beperkingen. Zie de gedetailleerde documentatie bij Evaluation README
- Geïntroduceerde LLM-modulo baseline
- Ondersteuning voor lokale LLM-inferentie met Qwen3-8B/4B.
🚀 Snel starten
⚙️ Installatie
- Maak een conda-omgeving aan en installeer afhankelijkheden:
conda create -n chinatravel python=3.9
conda activate chinatravel
pip install -r requirements.txt - Download de database en pak deze uit in de map "chinatravel/environment/"
- Download de open-source LLM's (optioneel).
bash download_llm.sh- Download de tokenizers.
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/▶️ Uitvoeren
We ondersteunen deepseek (officiële API van deepseek), gpt-4o (chatgpt-4o-latest), glm4-plus, en lokale inferenties met Qwen (Qwen3-8B), llama, mistral (Mistral-7B-Instruct-v0.3), enzovoort.
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
Opmerking:
- De vlag
--oracle_translationgeeft toegang tot geannoteerde grondwaarheid, waaronder: hard_logic_py: Uitvoerbare verificatie DSL-codehard_logic_nl: De bijbehorende beschrijvingen van beperkingen- Voorbeeldstructuur van annotaties:
{
"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"],
}
``
- De LLM-modulo methode vereist oracle_translation modus voor het symbolische verfijningsproces
📊 Evaluatie
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_NAMEIn TPC@IJCAI2025 wordt de evaluatiecode geleverd in het bestandeval_tpc.py. Je kunt de evaluatiecode als volgt uitvoeren:
python:chinatravel/agent/your_agent.py from .base import BaseAgentBaseAgent📚 Documentatie
🛠️ Geavanceerde Ontwikkeling
1. Ontwikkel Je Eigen Agent-Algoritme
Om je eigen agent-algoritme te ontwikkelen, moet je de
-klasse uitchinatravel/agent/base.pyovererven en de logica voor je algoritme toevoegen aan deinit_agent-functie inchinatravel/agent/load_model.py. We bieden een leeg agentvoorbeeld genaamdTPCAgent.BaseAgentStappen:
- Erf de
-klasse: Maak een nieuw Python-bestand aan in de mapchinatravel/agenten definieer je eigen agentklasse, die overerft vanBaseAgent.
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
- Voeg code toe aan de functie init_agent: Open het bestand chinatravel/agent/load_model.py en voeg ondersteuning toe voor je nieuwe agent in de functie init_agent.
python:
def init_agent(kwargs):
# ... existing code ...
elif kwargs["method"] == "YourMethodName":
agent = YourAgent(
kwargs
)
# ... existing code ...
return agent
2. Ontwikkel Uw Eigen Lokale LLM
Om uw eigen lokale large-language model (LLM) te ontwikkelen, moet u de AbstractLLM-klasse uit chinatravel/agent/llms.py overerven en de bijbehorende lokale LLM-inferentiecode toevoegen in llms.py. We bieden een leeg LLM-voorbeeld genaamd TPCLLM.
Stappen:
- Erf de AbstractLLM-klasse: Definieer uw eigen LLM-klasse in het chinatravel/agent/llms.py-bestand, waarbij u erft van AbstractLLM.
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
- Voeg code toe aan de init_agent functie: Open het chinatravel/agent/load_model.py bestand en voeg ondersteuning toe voor je nieuwe llm in de init_llm functie.
python:
def init_llm(kwargs):
# ... existing code ...
elif llm_name == "glm4-plus":
llm = YourLLM()
# ... existing code ...
return llm
3. Voer uw code uit met behulp van experiment scripts
Na het voltooien van de bovenstaande ontwikkeling kunt u de experiment scripts gebruiken om uw code uit te voeren.
Voorbeeld van uitvoeren:
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 | অসমীয়াDe resultaten worden opgeslagen in de mapresults/YourMethodName_YourLLMName_xxx, bijvoorbeeldresults/TPCAgent_TPCLLM.✉️ Contact
Als u problemen heeft, neem dan contact op met Jie-Jing Shao, Bo-Wen Zhang, Xiao-Wen Yang.
📌 Referentie
Als ons artikel of gerelateerde bronnen waardevol zijn voor uw onderzoek, verzoeken wij u vriendelijk om een referentie te geven.
--- Tranlated By Open Ai Tx | Last indexed: 2025-10-17 ---