We use recipe.main to denote the recipe entry point and to automatically trace all global async functions that were defined in this file. Synchronous functions are assumed to be simple and fast, and not worth tracing.
recipe.main must appear at the bottom of the file.
The entry point must be async.
Most recipe functions will be async so that language model calls are parallelized as much as possible.
Different recipes take different arguments, which will be provided as keyword arguments to the entry point. This recipe doesn’t use any arguments.
Add another function and call it from say_hello. Does it show up in the trace? What if you make it async and call it as result = await my_function()?