Confusing interaction between messages and tools

I have defined the following a very simple function translating from one language to another (using gpt-4-turbo-preview). It is given as the only item of a list to the tools argument.

    "type": "function",
    "function": {
        "name": "translation_assistant",
        "description": "Translation service for language learners.",
        "parameters": {
            "type": "object",
            "properties": {
                "translations": {
                    "type": "array",
                    "items": {
                        "type": "string",
                    "description": "The translation of each Italian sentence into English.",
            "required": ["translations"],

When I include the following single message in a list to the messages argument, it works:>

    messages = []
        "role": "system",
        "content": "Italian sentences to be translated:.\n" + sentences_str

When I add to the messages list the following message, it doesn’t work. It just returns the original Italian. >

        "role": "user",
        "content": "Translate sentences into English"

Can anyone explain why this might be the case? Or in general, how messages (system and user) and tools interact with one another? Thanks.