I think one of DSPy's most valuable contributions is a standardization of benchmarking. This will help make comparisons between models more transparent as you don't have to worry about biasing the test results because your prompt choice was unoptimized for a particular model.
Thanks for the intro and explanation. One suggestion: could you not zoom in and out so much while going through the demo, because there's a lot of code on the screen and typically viewers' eyes move about to try to make sense of it. Constant zooming would disrupt the process, and tbh I just don't see a point of zooming because the text is already big enough to see without it, and you already can move your cursor or select text to highlight a part.
I agree with one the comments below, zooming in and moving the cursor and talking very fast makes it bit hard to follow. But I'm doing it sometimes too during the meetings so I know exactly where it comes from ;). Having that said... Very informative video and explanation. Great job and big thank you! I just subscribed to your channel and looking forward to learn more!
Thanks Connor for the deep dive. In 36:00, when you talk about whether using multiple dspy.ChainOfThought modules or using only one is the same, it is actually NOT the same. If you look closely at the compiled state of your dspy program, every module in the pipeline has its own bootstrapped examples after compilation to maximize correctness in every step. In this case, the second dspy.ChainOfThought module will also have the passages context from the previous one.
Thanks for sharing this review about DSPy, it's amazing. I'm very excited about this framework. However, I don't understand how to create a DSPy system capable of sending different queries in a single request. For example, imagine that the program receives queries={'key_1':'query1', 'key_2':'query2', ...}, snippets={'key_1':'snippets1','key_2':'snippets2' , ...} and returns the response in JSON format answer={'key_1':'answer1', ...,key_n:'answer2'} in a single call. That is, I have been able to design a zero-shot program that is capable of answering different questions in a single call, but it is not at all intuitive when it comes to optimizing it. P.S. To make the output a dictionary I used 'type_predictors', that is, Output(Basemodel) defines each of the keys key_1,key_2, etc...
First of all, thanks for the amazing content you are putting out. Small suggestion: The code is visible fine as it is. There is no need to zoom in to the text based on the cursor. This zoom movements, some too fast that we can even see motion blur 😊, actually take the focus out of the video as the eyes tries to focus on text movements and strains the eyes too. Thanks again.
This is amazing! You really covered a lot of ground that was missing in the documentation. I'm working on creating a tutorial of end2end DSPy on a custom dataset because I find that missing. Thank you!
where is link to code used at 31:09 pls, as it is written :walking through the introduction notebooks showing how to compile a simple retrieve-then-read RAG program
Coming from twitter. first minute is like, its just another layer of abstraction.... 8 minutes in: OMG, this would change how I work
Very nice, thank you. Only the zooming and movement is kind of dizzyish and way to fast sometimes so I can't follow anything as you can't read or know where you are going. I think with the large pointer is enough to drive attention to it. Anyway, great vid and thanks again for the intro to DSPy.
Thanks for this deep dive 🚀
Thanks for this video. I watched this on 2x speed and it was very informative
amazing explanation!! thanks for the video 🙏🏻
🎯 Key points for quick navigation: Exciting new framework Programming model optimization Graph computation programs 09:55 Signature, dock string 10:10 Prompt optimization, syntax 10:38 Input, output fields 10:52 Control flow, loops 11:20 UAPI, web queries 12:26 DSPy Assertions, suggestions 13:49 Citation attribution suggestions 14:16 Optimization, instructions, examples 14:59 DpY as PyTorch 16:31 Inductive biases, depth 17:43 Intermediate supervision, DpY compiler 19:22 Testing with programs 19:35 Optimizing instructions and examples 20:03 Automatic data labeling 20:46 Ending manual prompts 21:14 Adapting to new models 22:49 Structured output with prompts 25:33 Fine-tuning neural networks 26:26 Using few-shot examples 27:51 Bootstrapping rationales 28:19 Evaluating synthetic examples Overlapping keywords metrics LM judge prompt LM produce metric 37:58 Deep learning paradigm shift 38:41 Data set formatting 40:03 Inspect intermediate outputs 40:59 Add Chain of Thought 43:35 Define optimization metric 45:13 Value of reasoning 45:28 Inspect parameters 46:25 Multi-hop search integration Queries connected to final answer Introduction to multi-hop search Supervision on intermediate hops Made with HARPA AI
Thanks for sharing. I now have a new way to think about promot chaining. DSPy indeed
Thanks Connor for getting a video out on this!
This was super helpful! Appreciate it!
Great vid! If you return to it in the future I'd love to see how dspy handles tool calls in models like GPT-4. I spend so much time "bargaining" with my prompts to consistently call functions XD...
Great explanation Connor you put it very well and gave the right bits of information and details
@gilbertobatres-estrada5119