async fn invoke(&self, input_variables: PromptArgs) -> Result<String, ChainError> {
        self.call(input_variables)
            .await
            .map(|result| result.generation)
    }
Invoke the `Chain` and receive just the generation result as a String.
The input is a set of variables passed as a `PromptArgs` hashmap.

# Example

```rust,ignore
# use crate::my_crate::{Chain, ConversationalChainBuilder, OpenAI, OpenAIModel, SimpleMemory, PromptArgs, prompt_args};
# async {
let llm = OpenAI::default().with_model(OpenAIModel::Gpt35);
let memory = SimpleMemory::new();

let chain = ConversationalChainBuilder::new()
.llm(llm)
.memory(memory.into())
.build().expect("Error building ConversationalChain");

let input_variables = prompt_args! {
"input" => "Im from Peru",
};

match chain.invoke(input_variables).await {
Ok(result) => {
println!("Result: {:?}", result);
},
Err(e) => panic!("Error invoking Chain: {:?}", e),
};
# };
```
src/chain/chain_trait.rs