Towards accurate differential diagnosis with large language models