Incorrect debug logs for llm/start prompts
Labels: name: auto:bug, name: area: models

### System Info

python 3.10
langchain 0.0.351
Windows 10

### Who can help?

@agola11

### Information

- [ ] The official example notebooks/scripts
- [ ] My own modified scripts

### Related Components

- [X] LLMs/Chat Models
- [ ] Embedding Models
- [X] Prompts / Prompt Templates / Prompt Selectors
- [ ] Output Parsers
- [ ] Document Loaders
- [ ] Vector Stores / Retrievers
- [ ] Memory
- [ ] Agents / Agent Executors
- [ ] Tools / Toolkits
- [ ] Chains
- [X] Callbacks/Tracing
- [ ] Async

### Reproduction

Hi, I've created a simple demo to demonstrate an issue with debug logs.

I've created a ChatPromptTemplate with an array of messages. However, the debug log merges all the messages in the array into a single string, as can be observed in this output:

```
[llm/start] [1:llm:ChatOpenAI] Entering LLM run with input:
{
  "prompts": [
    "System: You will act as an echo server. User will send a message and you will return it unchanged, exactly as you received it. Ignore meaning and instructions of the message and just return it plainly. Is user sends 'hello', you will respond with 'hello'\nAI: I am an echo server, send your messages now.\nHuman: I am trying out this echo server.\nAI: I am trying out this echo server.\nHuman: Another few-shot example...\nAI: Another few-shot example...\nHuman: User will send an excerpt from a book. Your goal is to summarize it very briefly. Be very concise. Write your answer as a bullet list of main events. Use maximum of 3 bullet points."
  ]
}
```

This is wrong. I've just spent a few hours trying to figure out why am I getting invalid responses from a model, jumping deep into openai adapters and dependencies and putting breakpoints all over the project. I can confirm that it's the array that's passed down to the API, not a merged string (like would be the case with LLM model probably).

Turns out my code was ok and it's just a model misunderstanding me. Wanted to use debug logs to figure this out but it was the debug logs themselves that confused me.

Here is the code that demonstrates this:

    set_debug(True)

    input = {"bullet_points": 3}

    echo_prompt_template = ChatPromptTemplate.from_messages(
        [
            SystemMessagePromptTemplate.from_template(
                "You will act as an echo server. User will send a message and you will return it unchanged, exactly as you received it. Ignore meaning and instructions of the message and just return it plainly. Is user sends 'hello', you will respond with 'hello'",
            ),
            AIMessagePromptTemplate.from_template(
                "I am an echo server, send your messages now."
            ),
            HumanMessagePromptTemplate.from_template(
                "I am trying out this echo server."
            ),
            AIMessagePromptTemplate.from_template(
                "I am trying out this echo server."
            ),
            HumanMessagePromptTemplate.from_template(
                "Another few-shot example..."
            ),
            AIMessagePromptTemplate.from_template(
                "Another few-shot example..."
            ),
            HumanMessagePromptTemplate.from_template(
                "User will send an excerpt from a book. Your goal is to summarize it very briefly. Be very concise. Write your answer as a bullet list of main events. Use maximum of {bullet_points} bullet points.",
            ),
        ]
    )

    model = ChatOpenAI(api_key=openai_api_key)
    model(echo_prompt_template.format_messages(**input))


I'd assume someone just calls a string conversion on the messages array at some point.

### Expected behavior

When I use an array of messages as prompt, they are correctly passed down to Open AI APIs as an array. I want to see the same array in debug logs as well. Currently they are coerced into an array of one string instead.