Commit e91da86
authored
feat(openrouter): add streaming token usage support (#35559)
Streaming token usage was silently dropped for `ChatOpenRouter`. Both
`_stream` and `_astream` skipped any SSE chunk without a `choices` array
— which is exactly the shape OpenRouter uses for the final
usage-reporting chunk. This meant `usage_metadata` was never populated
on streamed responses, causing downstream consumers (like the Deep
Agents CLI) to show "unknown" model with 0 tokens.
## Changes
- Add `stream_usage: bool = True` field to `ChatOpenRouter`, which
passes `stream_options: {"include_usage": True}` to the OpenRouter API
when streaming — matching the pattern already established in
`langchain-openai`'s `BaseChatOpenAI`
- Handle usage-only chunks (no `choices`, just `usage`) in both
`_stream` and `_astream` by emitting a `ChatGenerationChunk` with
`usage_metadata` via `_create_usage_metadata`, instead of silently
`continue`-ing past them1 parent e50625e commit e91da86
File tree
4 files changed
+208
-29
lines changed- libs/partners
- openai/langchain_openai/chat_models
- openrouter
- langchain_openrouter
- tests/unit_tests
- __snapshots__
4 files changed
+208
-29
lines changedLines changed: 38 additions & 27 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
577 | 577 | | |
578 | 578 | | |
579 | 579 | | |
580 | | - | |
581 | | - | |
| 580 | + | |
| 581 | + | |
582 | 582 | | |
583 | 583 | | |
584 | 584 | | |
| |||
600 | 600 | | |
601 | 601 | | |
602 | 602 | | |
| 603 | + | |
603 | 604 | | |
604 | 605 | | |
605 | 606 | | |
| |||
611 | 612 | | |
612 | 613 | | |
613 | 614 | | |
| 615 | + | |
614 | 616 | | |
615 | 617 | | |
616 | 618 | | |
| |||
636 | 638 | | |
637 | 639 | | |
638 | 640 | | |
639 | | - | |
640 | | - | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
641 | 645 | | |
642 | 646 | | |
643 | | - | |
644 | | - | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
645 | 651 | | |
646 | 652 | | |
647 | | - | |
648 | | - | |
| 653 | + | |
| 654 | + | |
649 | 655 | | |
650 | 656 | | |
651 | 657 | | |
| |||
671 | 677 | | |
672 | 678 | | |
673 | 679 | | |
674 | | - | |
675 | | - | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
676 | 684 | | |
677 | 685 | | |
678 | 686 | | |
| |||
690 | 698 | | |
691 | 699 | | |
692 | 700 | | |
693 | | - | |
694 | | - | |
| 701 | + | |
695 | 702 | | |
696 | | - | |
| 703 | + | |
697 | 704 | | |
698 | 705 | | |
699 | 706 | | |
700 | 707 | | |
701 | 708 | | |
702 | 709 | | |
703 | 710 | | |
704 | | - | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
705 | 714 | | |
706 | 715 | | |
707 | 716 | | |
| |||
714 | 723 | | |
715 | 724 | | |
716 | 725 | | |
717 | | - | |
718 | | - | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
719 | 729 | | |
720 | 730 | | |
721 | 731 | | |
| |||
745 | 755 | | |
746 | 756 | | |
747 | 757 | | |
748 | | - | |
749 | | - | |
| 758 | + | |
| 759 | + | |
750 | 760 | | |
751 | 761 | | |
752 | 762 | | |
753 | 763 | | |
754 | 764 | | |
755 | | - | |
756 | | - | |
| 765 | + | |
| 766 | + | |
757 | 767 | | |
758 | 768 | | |
759 | 769 | | |
760 | 770 | | |
761 | 771 | | |
762 | 772 | | |
763 | | - | |
764 | | - | |
765 | | - | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
766 | 776 | | |
767 | 777 | | |
768 | 778 | | |
769 | 779 | | |
770 | 780 | | |
771 | | - | |
772 | | - | |
773 | | - | |
774 | | - | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
775 | 785 | | |
776 | 786 | | |
| 787 | + | |
777 | 788 | | |
778 | 789 | | |
779 | 790 | | |
| |||
Lines changed: 37 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
223 | 223 | | |
224 | 224 | | |
225 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
226 | 233 | | |
227 | 234 | | |
228 | 235 | | |
| |||
443 | 450 | | |
444 | 451 | | |
445 | 452 | | |
446 | | - | |
| 453 | + | |
447 | 454 | | |
448 | 455 | | |
449 | 456 | | |
| |||
452 | 459 | | |
453 | 460 | | |
454 | 461 | | |
| 462 | + | |
| 463 | + | |
455 | 464 | | |
456 | 465 | | |
457 | 466 | | |
| |||
466 | 475 | | |
467 | 476 | | |
468 | 477 | | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
469 | 490 | | |
470 | 491 | | |
471 | 492 | | |
| |||
515 | 536 | | |
516 | 537 | | |
517 | 538 | | |
518 | | - | |
| 539 | + | |
519 | 540 | | |
520 | 541 | | |
521 | 542 | | |
| |||
524 | 545 | | |
525 | 546 | | |
526 | 547 | | |
| 548 | + | |
| 549 | + | |
527 | 550 | | |
528 | 551 | | |
529 | 552 | | |
| |||
540 | 563 | | |
541 | 564 | | |
542 | 565 | | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
543 | 578 | | |
544 | 579 | | |
545 | 580 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
Lines changed: 132 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2831 | 2831 | | |
2832 | 2832 | | |
2833 | 2833 | | |
| 2834 | + | |
| 2835 | + | |
| 2836 | + | |
| 2837 | + | |
| 2838 | + | |
| 2839 | + | |
| 2840 | + | |
| 2841 | + | |
| 2842 | + | |
| 2843 | + | |
| 2844 | + | |
| 2845 | + | |
| 2846 | + | |
| 2847 | + | |
| 2848 | + | |
| 2849 | + | |
| 2850 | + | |
| 2851 | + | |
| 2852 | + | |
| 2853 | + | |
| 2854 | + | |
| 2855 | + | |
| 2856 | + | |
| 2857 | + | |
| 2858 | + | |
| 2859 | + | |
| 2860 | + | |
| 2861 | + | |
| 2862 | + | |
| 2863 | + | |
| 2864 | + | |
| 2865 | + | |
| 2866 | + | |
| 2867 | + | |
| 2868 | + | |
| 2869 | + | |
| 2870 | + | |
| 2871 | + | |
| 2872 | + | |
| 2873 | + | |
| 2874 | + | |
| 2875 | + | |
| 2876 | + | |
| 2877 | + | |
| 2878 | + | |
| 2879 | + | |
| 2880 | + | |
| 2881 | + | |
| 2882 | + | |
| 2883 | + | |
| 2884 | + | |
| 2885 | + | |
| 2886 | + | |
| 2887 | + | |
| 2888 | + | |
| 2889 | + | |
| 2890 | + | |
| 2891 | + | |
| 2892 | + | |
| 2893 | + | |
| 2894 | + | |
| 2895 | + | |
| 2896 | + | |
| 2897 | + | |
| 2898 | + | |
| 2899 | + | |
| 2900 | + | |
| 2901 | + | |
| 2902 | + | |
| 2903 | + | |
| 2904 | + | |
| 2905 | + | |
| 2906 | + | |
| 2907 | + | |
| 2908 | + | |
| 2909 | + | |
| 2910 | + | |
| 2911 | + | |
| 2912 | + | |
| 2913 | + | |
| 2914 | + | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
| 2921 | + | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
| 2925 | + | |
| 2926 | + | |
| 2927 | + | |
| 2928 | + | |
| 2929 | + | |
| 2930 | + | |
| 2931 | + | |
| 2932 | + | |
| 2933 | + | |
| 2934 | + | |
| 2935 | + | |
| 2936 | + | |
| 2937 | + | |
| 2938 | + | |
| 2939 | + | |
| 2940 | + | |
| 2941 | + | |
| 2942 | + | |
| 2943 | + | |
| 2944 | + | |
| 2945 | + | |
| 2946 | + | |
| 2947 | + | |
| 2948 | + | |
| 2949 | + | |
| 2950 | + | |
| 2951 | + | |
| 2952 | + | |
| 2953 | + | |
| 2954 | + | |
| 2955 | + | |
| 2956 | + | |
| 2957 | + | |
| 2958 | + | |
| 2959 | + | |
| 2960 | + | |
| 2961 | + | |
| 2962 | + | |
| 2963 | + | |
| 2964 | + | |
| 2965 | + | |
0 commit comments