add streaming tokens and model_name
Labels: name: auto:improvement, name: area: models

(#4583)
@hwchase17, @baskaryan

My test code is as follows.

```python
import asyncio
from langchain.callbacks import get_openai_callback
from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    HumanMessage,
    SystemMessage
)

example_messages = [
    SystemMessage(content="You are a helpful, pattern-following assistant that translates corporate jargon into plain English."),
    #SystemMessage(name="example_user", content="New synergies will help drive top-line growth."),
    #SystemMessage(name="example_assistant", content="Things working well together will increase revenue."),
    #SystemMessage(name="example_user", content="Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage."),
    #SystemMessage(name="example_assistant", content="Let's talk later when we're less busy about how to do better."),
    HumanMessage(content="This late pivot means we don't have time to boil the ocean for the client deliverable."),
]

async def main():
    
    for model in [
        "gpt-3.5-turbo-0301",
        #"gpt-3.5-turbo-0613",
        #"gpt-3.5-turbo",
        #"gpt-4-0314",
        #"gpt-4-0613",
        #"gpt-4",
        ]:
        print(model)

        with get_openai_callback() as cb:
            chat = ChatOpenAI(model_name=model, streaming=False, temperature=0, max_tokens=100)

            resp = chat.generate([example_messages])
            print()
            print(resp)

            print("prompt_tokens : " + str(cb.prompt_tokens))
            print("completion_tokens : " + str(cb.completion_tokens))
            print("total_tokens : " + str(cb.total_tokens))
            print("total_cost : " + str(cb.total_cost))

        with get_openai_callback() as cb:
            chat = ChatOpenAI(model_name=model, streaming=False, temperature=0, max_tokens=100)

            resp = await chat.agenerate([example_messages])
            print()
            print(resp)

            print("prompt_tokens : " + str(cb.prompt_tokens))
            print("completion_tokens : " + str(cb.completion_tokens))
            print("total_tokens : " + str(cb.total_tokens))
            print("total_cost : " + str(cb.total_cost))

        with get_openai_callback() as cb:
            chat = ChatOpenAI(model_name=model, streaming=True, temperature=0, max_tokens=100)

            resp = chat.generate([example_messages])
            print()
            print(resp)

            print("prompt_tokens : " + str(cb.prompt_tokens))
            print("completion_tokens : " + str(cb.completion_tokens))
            print("total_tokens : " + str(cb.total_tokens))
            print("total_cost : " + str(cb.total_cost))

        with get_openai_callback() as cb:
            chat = ChatOpenAI(model_name=model, streaming=True, temperature=0, max_tokens=100)

            resp = await chat.agenerate([example_messages])
            print()
            print(resp)

            print("prompt_tokens : " + str(cb.prompt_tokens))
            print("completion_tokens : " + str(cb.completion_tokens))
            print("total_tokens : " + str(cb.total_tokens))
            print("total_cost : " + str(cb.total_cost))

        print()

if __name__ == '__main__':
    asyncio.run(main())
```