Aside from `__call__` and `run` methods shared by all `Chain` object, `LLMChain` offers a few more ways of calling the chain logic:
- `apply` allows you run the chain against a list of inputs:
```python
input_list = [
{"product": "socks"},
{"product": "computer"},
{"product": "shoes"}
]
llm_chain.apply(input_list)
```
<CodeOutputBlock lang="python">
```
[{'text': '\n\nSocktastic!'},
{'text': '\n\nTechCore Solutions.'},
{'text': '\n\nFootwear Factory.'}]
```
</CodeOutputBlock>
- `generate` is similar to `apply`, except it return an `LLMResult` instead of string. `LLMResult` often contains useful generation such as token usages and finish reason.
'\n\nQ: What did the duck say when his friend died?\nA: Quack, quack, goodbye.'
```
</CodeOutputBlock>
## Parsing the outputs
By default, `LLMChain` does not parse the output even if the underlying `prompt` object has an output parser. If you would like to apply that output parser on the LLM output, use `predict_and_parse` instead of `predict` and `apply_and_parse` instead of `apply`.
With `predict`:
```python
from langchain.output_parsers import CommaSeparatedListOutputParser