Enhancing LLM Code Generation Capabilities through Test-Driven Development and Code Interpreter