|
44 | 44 | from sentry_sdk.consts import SPANDATA, OP |
45 | 45 | from sentry_sdk.integrations.openai import ( |
46 | 46 | OpenAIIntegration, |
47 | | - _calculate_token_usage, |
48 | 47 | ) |
49 | 48 | from sentry_sdk.utils import safe_serialize |
50 | 49 |
|
@@ -1780,162 +1779,6 @@ async def test_span_origin_embeddings_async(sentry_init, capture_events): |
1780 | 1779 | assert event["spans"][0]["origin"] == "auto.ai.openai" |
1781 | 1780 |
|
1782 | 1781 |
|
1783 | | -def test_calculate_token_usage_a(): |
1784 | | - span = mock.MagicMock() |
1785 | | - |
1786 | | - def count_tokens(msg): |
1787 | | - return len(str(msg)) |
1788 | | - |
1789 | | - response = mock.MagicMock() |
1790 | | - response.usage = mock.MagicMock() |
1791 | | - response.usage.completion_tokens = 10 |
1792 | | - response.usage.prompt_tokens = 20 |
1793 | | - response.usage.total_tokens = 30 |
1794 | | - messages = [] |
1795 | | - streaming_message_responses = [] |
1796 | | - |
1797 | | - with mock.patch( |
1798 | | - "sentry_sdk.integrations.openai.record_token_usage" |
1799 | | - ) as mock_record_token_usage: |
1800 | | - _calculate_token_usage( |
1801 | | - messages, response, span, streaming_message_responses, count_tokens |
1802 | | - ) |
1803 | | - mock_record_token_usage.assert_called_once_with( |
1804 | | - span, |
1805 | | - input_tokens=20, |
1806 | | - input_tokens_cached=None, |
1807 | | - output_tokens=10, |
1808 | | - output_tokens_reasoning=None, |
1809 | | - total_tokens=30, |
1810 | | - ) |
1811 | | - |
1812 | | - |
1813 | | -def test_calculate_token_usage_b(): |
1814 | | - span = mock.MagicMock() |
1815 | | - |
1816 | | - def count_tokens(msg): |
1817 | | - return len(str(msg)) |
1818 | | - |
1819 | | - response = mock.MagicMock() |
1820 | | - response.usage = mock.MagicMock() |
1821 | | - response.usage.completion_tokens = 10 |
1822 | | - response.usage.total_tokens = 10 |
1823 | | - messages = [ |
1824 | | - {"content": "one"}, |
1825 | | - {"content": "two"}, |
1826 | | - {"content": "three"}, |
1827 | | - ] |
1828 | | - streaming_message_responses = [] |
1829 | | - |
1830 | | - with mock.patch( |
1831 | | - "sentry_sdk.integrations.openai.record_token_usage" |
1832 | | - ) as mock_record_token_usage: |
1833 | | - _calculate_token_usage( |
1834 | | - messages, response, span, streaming_message_responses, count_tokens |
1835 | | - ) |
1836 | | - mock_record_token_usage.assert_called_once_with( |
1837 | | - span, |
1838 | | - input_tokens=11, |
1839 | | - input_tokens_cached=None, |
1840 | | - output_tokens=10, |
1841 | | - output_tokens_reasoning=None, |
1842 | | - total_tokens=10, |
1843 | | - ) |
1844 | | - |
1845 | | - |
1846 | | -def test_calculate_token_usage_c(): |
1847 | | - span = mock.MagicMock() |
1848 | | - |
1849 | | - def count_tokens(msg): |
1850 | | - return len(str(msg)) |
1851 | | - |
1852 | | - response = mock.MagicMock() |
1853 | | - response.usage = mock.MagicMock() |
1854 | | - response.usage.prompt_tokens = 20 |
1855 | | - response.usage.total_tokens = 20 |
1856 | | - messages = [] |
1857 | | - streaming_message_responses = [ |
1858 | | - "one", |
1859 | | - "two", |
1860 | | - "three", |
1861 | | - ] |
1862 | | - |
1863 | | - with mock.patch( |
1864 | | - "sentry_sdk.integrations.openai.record_token_usage" |
1865 | | - ) as mock_record_token_usage: |
1866 | | - _calculate_token_usage( |
1867 | | - messages, response, span, streaming_message_responses, count_tokens |
1868 | | - ) |
1869 | | - mock_record_token_usage.assert_called_once_with( |
1870 | | - span, |
1871 | | - input_tokens=20, |
1872 | | - input_tokens_cached=None, |
1873 | | - output_tokens=11, |
1874 | | - output_tokens_reasoning=None, |
1875 | | - total_tokens=20, |
1876 | | - ) |
1877 | | - |
1878 | | - |
1879 | | -def test_calculate_token_usage_d(): |
1880 | | - span = mock.MagicMock() |
1881 | | - |
1882 | | - def count_tokens(msg): |
1883 | | - return len(str(msg)) |
1884 | | - |
1885 | | - response = mock.MagicMock() |
1886 | | - response.usage = mock.MagicMock() |
1887 | | - response.usage.prompt_tokens = 20 |
1888 | | - response.usage.total_tokens = 20 |
1889 | | - response.choices = [ |
1890 | | - mock.MagicMock(message="one"), |
1891 | | - mock.MagicMock(message="two"), |
1892 | | - mock.MagicMock(message="three"), |
1893 | | - ] |
1894 | | - messages = [] |
1895 | | - streaming_message_responses = [] |
1896 | | - |
1897 | | - with mock.patch( |
1898 | | - "sentry_sdk.integrations.openai.record_token_usage" |
1899 | | - ) as mock_record_token_usage: |
1900 | | - _calculate_token_usage( |
1901 | | - messages, response, span, streaming_message_responses, count_tokens |
1902 | | - ) |
1903 | | - mock_record_token_usage.assert_called_once_with( |
1904 | | - span, |
1905 | | - input_tokens=20, |
1906 | | - input_tokens_cached=None, |
1907 | | - output_tokens=None, |
1908 | | - output_tokens_reasoning=None, |
1909 | | - total_tokens=20, |
1910 | | - ) |
1911 | | - |
1912 | | - |
1913 | | -def test_calculate_token_usage_e(): |
1914 | | - span = mock.MagicMock() |
1915 | | - |
1916 | | - def count_tokens(msg): |
1917 | | - return len(str(msg)) |
1918 | | - |
1919 | | - response = mock.MagicMock() |
1920 | | - messages = [] |
1921 | | - streaming_message_responses = None |
1922 | | - |
1923 | | - with mock.patch( |
1924 | | - "sentry_sdk.integrations.openai.record_token_usage" |
1925 | | - ) as mock_record_token_usage: |
1926 | | - _calculate_token_usage( |
1927 | | - messages, response, span, streaming_message_responses, count_tokens |
1928 | | - ) |
1929 | | - mock_record_token_usage.assert_called_once_with( |
1930 | | - span, |
1931 | | - input_tokens=None, |
1932 | | - input_tokens_cached=None, |
1933 | | - output_tokens=None, |
1934 | | - output_tokens_reasoning=None, |
1935 | | - total_tokens=None, |
1936 | | - ) |
1937 | | - |
1938 | | - |
1939 | 1782 | @pytest.mark.skipif(SKIP_RESPONSES_TESTS, reason="Responses API not available") |
1940 | 1783 | def test_ai_client_span_responses_api_no_pii(sentry_init, capture_events): |
1941 | 1784 | sentry_init( |
|
0 commit comments