haiku.rag/tests/cassettes/test_client_analyze/TestClientAnalysisIntegration.test_analyze_count_documents.yaml
2026-07-24 15:26:17 +03:00

613 lines
68 KiB
YAML

interactions:
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '96'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
encoding_format: base64
input:
- First document about cats.
model: qwen3-embedding:4b
uri: http://localhost:11434/v1/embeddings
response:
headers:
content-type:
- application/json
transfer-encoding:
- chunked
parsed_body:
data:
- embedding: L1mPuEPyyTxyjR88BQpbvKYy7LlkOA89cPIlPYRGBrwSEfA8z5yvu5WPB70MvOI86aM8O2QiN70W40A9GH8zvWbD3TlV+jS9RP4rvNIJTLsmoIi89Mqwu07UiDw/fEg82Y27PBbhVrsrSdu8XI1PvSc7Mj00kgG8oB00vFSVlb0VJBs9oxgcvIjEkTtdk4C8cjnYvLG+lrsKXXk7f9wkPL5LWLy+iOq721O6PNoZzDuQo9u8q7fuvB9JiTsQew09D2A5vZmDq7zPyVM7nsaEPEmElru6CDO85islPHm6C72te4s837QHOhCxFb3ABlE8Yj2cu7U0PrtUW9O8BJRJu+pwDryqu3i8SxGHvENTF71/nVs8K10kvJ+1abzFezk9DwvYu88iXrxgZoS7J0IXvZr0qDtIvvU8ms4GvU9WnTwQ4Bc9Tg3dO0TLuDsAQ4Q9ed2qPCkS1jya/Iw7UXyfPLbcDbwTHeu7SXEBPPaIajzidCm8j+4kPDqxBLyDqx87nKLvvJwpyLwm/aC7g5R4PPTjXLu86pQ6emngPJD9D7wzLOC7vd6KvDN6ELxrhLC7ah1RuzaIWrvr0yi8YrOaO49SJry8KAq7lZZ7vA2tk7wPkNS6hc6jO29FazwCocM8sUR2uwGfmzzorj28BeDxO74tbDzldg+9Nt/yu8AFP7xdNLe7PcSkPEWmJD1q3Zu8Nj50PFzr+rsE5ja8XoxBO/sgUDwtkbi77tCtvMYoYjsi5Sm6wPMzvKDZiDvaf/g862G1vHt2urzYa468f92TN8/TejzdC5S714iRPJqGjrwvvR47ieUFPM0tgTwCGvs7vtE8vMqFTzsqJxs8eREwPMBNYDwPZVU8nDw7PLU8EDypFus8kn6DPDycLb297Ei8nC2HOlLkerxUqh68YxM6uzRcMbwis0e8cG2VvEN3W7n1Lii9dYbyuqNe0jvQVGo8uDw/uyyDzjyJSL+8DMTUOx0IGrjj/Zk7HD9fvB7mIDxVJSU8VEDgO+cq5rzu3JQ8+AsiuviairxwVzq81ZtXvPeSIL0bah87TXJquWijBT0DjBa8veeBOaA5x7zLsMG7/JusOiMuGTqitb85rKabvOa2kTyt4Pa6ftb4PLGkB7xheZu8HX4QPITJ5jvcSBQ7vKmbvAltdbwSj608PZmnPEESSLuAm+K7JxucvGwXn7qV7wa9mvA1PJpjlTyCqkA7TbsRvOnKkLxQewc8A5PTOxu78rsdyD+8HKgQvHpA6zulm388cu3EO0j2nzwjtaW8cTI4vME4iryWfha8TneaPMwiLjw9Pwm8mVbZu/a0kbv4Nxq7q3gAvRmLfLx3MQE8nQoku7D+krxCJia81tb+O5cyb7wmOzi9qWAQux2b/TzS6Lg7dRCYuZboBrwJAr+7RrXMOWJdKzwItwW8l8ZuvNIN0jyS8ay8+9IJPVIQQTuxrnI8zQANPIbWszx7OSi8AEBhu2picDuZro46Q4YYPdfqwbxO34q76Ntau/tUczoK0QG8OxWSuzX5zrvhSto7CkK8vKa1xrl+r5s8aECDvFLinzw0E9S82CZmvCRVFDsbt0Y8GWdMvOrCFbsrqWy8vXIYvH76mzsfDag7884CPJlsBj3F+OQ76x2HOoIOwDzfzDY9b/NMvLOvbbwAoNM7p/nfOyocSrtIpHm6bBfEvO5VhDzq7z07z6+lOw37GL2Ohd86R9ZkvaDIwbzKGp+6znUouyrdKDxDt0082q10PM6nvDyA1ac8KVagvFYo1zwPp7+8uH6/uxQsATyM3rA7Xw72u/Ca+TyjCSU90wQJPOqZgbyd9rc6dfUhPIh7hbx/JwS90ioBvEBLizvoRlg8+6J9vJpZfL1NuHK8kDbfvEyCl7yZjJq6oLjnPF+Ztzz4AhK80Ji5O0iBSzyxTRO8Y1mpvCaZcLrvvpA8DDDQPI4pxzwalxK8RN+rOtmlCD1+xbC7ckCsu1IlvLyxGP065Sj2PCgAnbzROr27R5rfvD7fuzv1iuW8IxP1vPW0OLywkz47CG6aO45Jq7zDu/88Zt6yO2xJljs2/vo6PgLfu7eOPbxSJgQ7Fjy+O0F0wDwOk1E7Z9eWO7C2E73QNy28u6oGPHW1Gz2y9/E8wHAdumsogbw6ZLO8sJIVvf4fI7v+OwO7fcKivGGUY7yDil89fR+nPGB7sDt8aAI7okjQuh8dgDzMBYm82G/RvGIKuTxuOag8TF8pvfNYE72pTDE86KuEuxQxVzzJs9C7iv/vuzwczLoT1mG5q9q7vBWkqjzfFcK8j3HSO+s9FLw3DLo8FY8CPSD+Ez28pV07Dm2EO02auLwRbTS8bL7DO23v/rw7/bY79iXqvPU0Jzx5ywc8qEA9vJ4NozzK/B48erwmPKxKLzwgsoS9YeICveRUrjt+gem7eEX+Ow51nLwdr5472YYZPGdoFr24ZCa9JkPJvFE4rr0A+xm8VEu6uUeWqLzwgsI7MsTzvEcW5bxsHOE7Rp8qPUR4Pj1p+SC96AXBu6/XNL0W0HI8ol4ovCteJTw6Ppc8Lr3EO+g7xrsnmfI8d6YWPTf0p7slkeM8A1c1O/8n6rzQf2o8FNhoPPmWlDxBcpk8v5yivJsaPT3pQSK8YC6mu4AhyTtiJKG7pbKkO7E9ATxRWMm7zLEnPNrnMzwnnGq8tR7vPEkKiDwg6ae8SMwtvcWmzTwn0BI82TJqPIMAULu+vfs8pJizPIlvELyu93i7f4QXvb4+U7pn3z88yCGbvDLyfbwJT468rd0AO3vJ3rvOv8W5daH0PKhvs7w13pi8gZUpPFrSkjzpP0O8L6R2vDWTYbw8U22803RbPP80BrsnElw8hP9nvQnxhLwnGiU6c8KLPL796DwR8Y03cNBIu2NKsbw+ors8hwXju91QzzsAzR47yWdFvNfXNjw1Clc88i+luyDwurpDd6C8sGizPKLdrrypN1e7EZ+0PJDwJLzIEjc8TOhiOEhhuDz1Ids7fsKdPDrzy7xWo+k8vGQdO+yCtLz0eDq3j15tvBY5vLwQlzW8MXoUvNC+gzzGpnU84r8OvI3YSL0cba67SFmVu2yJWjp5uRm9qw8qOIdRsTz2gOg7HOUdvFJzA7w3XOs8CpvyO3CjAbwZZ3Q7ZjyvPCfJnryrJf+73Rj5uzLTz7wZTBe9FrUQPbf6FjxgJqE7Z40JvRViQDvYLZe7X4bEPJbWlby7v7679TJOumjPGji/x8g89NrUPGf/vLu90ze9XzY/umATOruJaKG8d68RvRRmPDwpudA8Ob0gvVEJarymxLi7MUlfvTe75LwyvaG8SkxyPBwS6rySako8xYYju7zvhb3Y6hC93QEnPb2fqTxkJtw7RZXGvJM5QrytLyE9oxoGvUA5wjwdjY+8mQwXvZ5H+zsKFpe8/UgZPOXfwzxOBok8I6iiPEqrsDzdbD89R94BO/ixHbzzwJ+8aZMtO9sJrTxHPbu7MnQuPJlKVrw5gaI8uWD/uCwCxDw72ko95bxxO1yWkTzFhHo8uoaQvPe7ULtnObw7WWVAPJuaAjxF7aS8jlU1vUKbf7tvtBc9GDFLvFitazl7fZW7RNxKu2Q/tzuEsB08fl10vZ68JDzN3II83zo4vG0WVDxO2Ye8Ob6yO+keED1sGg+97SyDPDURwTr1iqc8Fh/Fu2B4Yzx3sR09DlcxPQmthrxWib+77ELbPBHPPzw2KdI8l30bvJ3U6TlFBDa9c3PJvKfSeLvSLYk6vkcaO36XkbygRCW8h3/mPFPNlzwEeR+8Zz2cu/Nd2bpVq0M9GYllvJc5U7zxJVK8W6K0vMWFkLwULhy9wVS3O9ZoprzuP6q80QjZOw9KsLuQas+8UjmaO/DOyrwo80O8jljmPHu1F7tpyzy8PJHePMglLLxhPyU8sBgFvc3UBD2OV8m8U13hu3Wy/TpDvUI70VthPJCDJD32Zp+5/2l8u6RPUzzNvEI7cH2cvaJMrzuLDA+9BcAAPF77XzxYS9O7qfEjPBWoxDxcPJ68Ps6FvKGhlryuq8M74JjAPKgS9TzWbZE8lE3ku7c9gLwUUY259Sf8u2t9XbzNpAe9q+F4POip+TmpQpK8LTsQvcrekTzUGCG8FqO0OxxNpTvyWa68dy9DPUcJDTwi6Ia8p2zMuyYRoTwVLGe8bTi0PKX92Ltkrxw8NQ9xOpTUpLziMDw8OQupvJHcULrcuja8VDTavBDnvTt/KHA815l3vFoYJbz8O8Y83QsDvadnc7oKsWi8llz6vJ9jjbzmQX+8pOjvvNIabzxjaiM9b7AAPAx/vzxVKCM8YhlaPPqBIjyEFIE8sClwPHnLnLztj3G8kNmRujKg8TsVXqq88anfPEJpDL2ie9g78V+tPDCWTzzKIno8y/YfvPgQVDycQTc8WnQuvI5yBD2AydC6iXCtuwHggjwZKrW831/zvNNBLjyx5QS84XCWvLr1abzhItk8V02fvOx3Jr0TtBS9qHIwvJNPvLvrSFe7AlJnPB1C97tl8Dw798A0Otg0AT2CYvq7+2iKPPWKxjwdKyo9CqBjPKxzfrzjtSY8xLOqPBBt9Ltajoq6a4QrPGpyAL3qSMg8qWChvEPpAbzkNBq9dP7DOkltrDyLurk78SrDvNDS47yGVha9hW+8O0soTjzZxc87YQyPPIlx8TxnB7S7PeS0Ot8nZ7yMwAq9+HjRO39BmLslRP278ycOPdz+azw3ogu9s9koPDkWDDwUeR28HDcGOoJQ1Lw9iAa8n8JXPHZuu7y8aiQ8MIjfultrB7t6VTO7vSIDvU3FUjzfQim9rKgvuxNg3zywTJ884BQ5PWHQHTwWXtU8z9s+vWwko7vpijU8sbWOPL3Q1rzMAcU7Q4hPPFyksLwrIzO9UqVZOlZakbykoxA9qXqsvJ91srzoAgc9WM4zPAM/rbwlXA69fntVPflXAbzYllO8W/JMvCr8J72y64a8K3umvPzuPzwoFP46h5qbPEi6+Lttv1I8AJ2zu2d8JD3gE9w8TzcPvdqkzbz/tpE83KRSvDSCoTygEOe8kUu6PJOZbzwHL5Q72TucO4Ut57pP+K269rKfux3GTbsnAcK76ab/PEcdBr1CdJu8I+uiPBfTBzu732g7byGVu3DICjzPhiC85zQ1vFJ7CTwMpqg8DRQWPIKqw7v7xRA84NtPvFb0dbyL14C8OibVOgUFrDxNoWO8L+yaPPkO+LplbUE9R58lPQdLNT2nHr+8UXM1PH8shDzINJG8kpGMvEPEUrwFwkw890YOvVF7nDtg3oa7EYJQvCR8fLwdSms8qXJxvOEwlTvA52s8jBHlvJjuPD0BQlw8EAdhPOLOybxr2I08husUPPGnOLz5H4c8bLKGvNy0aTxWllu8FY/NPPNqjbwe0dy8Bf2NvC7SD71Lf5K64sl8vBO5Zzvx2Sq8yZVPPHweBL1tTaI8HbguvYn2vrxmFPu7fXPLOx5CBT0FFI68Mnd0Pal4WjyRvZ+8ptf+u5V9R7ucjLi8KYI/vN93mzsH9hm7++/WvHpHgbwzjis7fbACvWw9xLvRCWm8s/IkvItTdLzV4KI7WCuTvP/QbDwfI1U84luJPKJ+3ry+FNq8FgGZPDH4LT0UCQs8Nh1DPE/RgbweiQ88HQ69PKFA37sKxdM7CZCwPLrUiDtRGf+8Pf18O3PcGzudpSC8lsEFO6RNYbweaqE7l5q6uhcUHjwSlby8Vp4Gul2IBr2YmlY7kbqjPDZHELyjCs08fv3SvLIWwbyAf6U6Mfc3vbc/37zBK7a8owuJPIT6jju4sCK8Vv5APZPwhDsLhmk7NFwYPdFcvDyhGoK786FJu/++djwTiR49iID2O+0hary6cQM8YzHtO16WcLzInvI88+eRO9B6gDtYSXO8fKQhvMXL9LvA8Zy7lyxuPD2Vgbx+P2c9Hai0vPsZ0bsJCdG7cg6bPMWaYrzZIx09aTrbu5jfubttGtU77SX7u9Jsz7svspE8X+IbPLRvAD0fjF+8Xwymu6nqiDwEqLK8HlXMvI0mvLxYNN27E6MhOyw2fLw7dgG8bnMgPfJ1CTzVTo68p7ThOxKtYTxc8Yg8KdSDvN/X3zt9FWU7RBpZvIhrkTy7UIg9Vhktu6ZxJz3otEW7HRORPNrI3bwGtVQ8LjCVu2yakbvuVUA7JRuIvG+VAz1DVtk8bPxGPGIqODthiSc8cflJO4GUubu/pLA6vUBBvX6wXjyDQpO8R0l9ukXqQbxmlre8a7GfOwfwLrzJnVs88ndgPI7ENjy1NNu7MXthPY3ZObwRHaY6+ZC+vOuLDD37kzG8h2VtPKvN5LtWgje9JO0qPKGzizwcIY27q43muoErODxHOgI9kfrKum6QP7vbaD28DzNWPA2uyTsZGkm8M63XvFRLbjxTqii91PFrO1U8E7zL7Q08UzwqvHqvyDyhIq68AFVAO3FFfzzVgDw87oytPJ2ahjytTrE7edKvu1RpBT0njCY8uXH0O/5vpTshS2K8iv7tPJRxnzxIaCK8JLEpu/b6TTzimn68QGDRuwJibru+9Ym8DaW2O+uGx7sh7F88+cfEPM1iIbm2GEg8HljNPJkYbrx0GZq8sCC+u69MJ710fAo9WeX4PIoZEzsID4e8gB+Bu4F6uDzshF89mlG8uSa/g7ysRA28fHiWPPWiEbxUnAA7wTkNO38AEb1ryEI8Vv6yu9JBhroI3Ak9xNjCvOmMzjo/Klk98lxrvOfqo7xJS+u8jWycvAAeVTzxYuK8Jp+zPOuy57sxtIC52JeAuv+sjzy28k097J2ZPAUxRbui7ha8iJvwu8PhYbvnZnq8uD3evC+RM7ytNZ88fOAJPeGDA7wVPim8ADuvvOXMVb34soi8utWLPGuu0LvR72C9St/zPM4tCz02eY287TqpvOz/4rsKk/O8a6I5PLijm7ydIsw6MROWO5aI8rtpwI27gD8vvMLjszvFzBI8yzbvvNcAFzw/fYk8DlbzvI8ZKr29P5o8YSdZvGwHqbt2GYk77+FVuCok27syxqG8YAK4vEbRrrv1HC67Ue6EPIigQ7yV/mo7FZzTO8d/wTwX8BW9MHusu2wTybzwwkw8L68jPJJDoLs0+ZU7sJ8wPHx5PTwSrY08YoNNvNfqazz9TE88r9UvPQK1pLxjOb68hSVdulOMu7xfNoE7iSKCPBwi+rkfXH69RmpNPLbNCj2bdVi8yeeFPLx3Xzy4QYE8TEbJu72+2Trsjks7KftzPLiffDp+u+G7qRcxO8C2DD1Ta5C8ZqJwO6PIzLtuezc7jql+uw6wBj046sk8IQ6Iu5mXnrstRqQ8w146PXWQ8bzA4Yq85ZzbO+zuczojoYm7Xmj+u90Ic7xr2S+8/uWDu9u667tx1Nu7Y8ylupolWzy+3lA892yJvD/8GzwFt9s8wXGUPPWPpryJoWW8QzY3vIGT9zy8X4Y8X2OiO8MDFT1FvNU8b6wMvJzk4LySIH07e/96PC1NBL13QsI6JWRuPCaSA701Ark8FaYvPDC9/LtXZji9w/fCO7WSMj0jOJi8xe+0vMwmkry4tD28hYyxPDwT7rzfYD28egWROiGdST1BtRC9j887vN3Nprukpbc8QI8FvXOYzzxTm8A8vPEcPD0qfDv0Yyi7/RQQvJ2c0jpH3xS9eE44PNf5cTsQquo8nrwYPXBPzDxIdI0844nkuuvhrrzT6KY7wDuKvExpQLx748K8KwtXOhqOObx2Umi8GPahvMEO27yX/IW8MV9QPXpckjgpemI8TxoLPE2YkDy6sCu71miaOwh5lTqXSJU8jJcDPOSoqTqk4/Y7eIQ7PdsN47yEGYi7ABagvBEjyrvJszW9w9mzvMOkKTz87cG8ibCTvHwc4Ds6rCc93bYIPU1ZSDvJmXw7N56VvHZK27q6kQU9rK2CPPOIFLpcdjC9MQvau4g2pbxlGxg6kF4VPbZzCzxD0Wm86XHqO2B6Ajw6waC6U1TYPEk7pLswd8a8LmsovHAAYbw4Moy9duIsPNE4izt94em8syYAPL+4wDvCtRa9wKEDPXytazvV6ms8vx8QPAnT8TxnwB0783FqPC4YOD197Wq8vRrCPOH4ljzydrY8cHCXPMPB0rzlsIm7mA8MvbcCSLwgjMK8M8+cPEdOiDxRwQk989xruuPy7jvZ+RA7kudSOi9tobxRc7M8KbWNO8Kf8rz3Ep88zXwkvOLfpDwsr188k2tDvBzAUDvjvUY8gZkIvHZIOLz0S0889iKhurM34btZtno8ll/mu+ifczyV4AK8mHVCvDG7uDxEYho8t9kCvX/QJz0qnow8JER8PB7fyTty4vU7+upbvFtOCD3Kwn87Pv5HPP4LFLumsZw8FQlDOuWvhjz/maq8P7dou+QSV734h9M8MveqPK9mCj2X3qC8XmcTvL9llrwQlA08MGjau0AdYTyn8/k8T4xbu8tMKTsvJnE7fstCuii0J7zLVTC8SEiVPJXKCbsd0/28ZOgcPDdrTTyU9Z+7hDHbPO5O9rsECbO8/ogzvNlAfDx8Ki08A2z/uQVtobxSjwI7zj6VvHDllbtNXxW9A70LvA8JCzxrcwq9QG29vKXYFDwXeeA6YpDTPDs4A7xsSfM7dloNvM4H/7znavK7PNUFPcTdHjzPPjc8bxPTPNXk/rotNsU78uvlvFd2vDxASWE97ILIu4dDHD12c4q7ItEZvM9MyLkYsDY5yIm2vFChYTsZiyC9Y2HvOu7QobweLkI9VY0dvGXCAb1Ggue7uUwdvclGNTwQBTW9JeHBOuQG6rwepPo7HZN+usVhxzxlmQg7Jqn2PM60XLpCRAc8KVjwuypR4DwBiMI7t0iEvFed77uOu+m8hE3ZPNSwrrwN64C87gstPRlXQrxjFJq8UNKhPL32hTp3USc8eDcyOhc1ETzlS567/0qevEVzaT3bw3I7XR/BO9zIV7sGcCK9ocUfPQXBTrwVdjC9iyBnu5niXbyMUUI8Y6/XPGxsS7tssVq9uvmSPDeHEjzhc228yC/KvEPWlrzZ+VG7r9yYvJSlJj289io86kG6PHdNujuQTki8he+fvCKCEDxkth+9nHHOO5tQkTtVUgc8NfycPG/287tpAF28H7HCvNgM+LwZrYq7aWcJO3Hi/jyy3N67pLEOvZ0X7TyRMSQ7pn17vE75GjxV8ow8Kd9EvOduYbxWk8Y8jSO1vL+Aujxi6Ay7gbgIPdPfZzx1/J088eh1OnS0nTzFmT484t5bvG8uNDsNo0+7XlIlOzTbsbu1NbS8Rv8RvH4tSLyqx4m8edOKPC7bAbyPPMy7lFRfPMdCgryKA9g7CRwovCyC9rvgOdY8rp0AvD2K8js9ITA85+fzPHRR9rz+C7K8PsYfPRqOkDx3UXs7VYtQPJ+6ZLwKACm8AxmFvHQnzLxlZRm8Z7LwvIVo9DrwO168TUTCuU/c37z8gYC7Jq/CPCow8zsB1qq8dw/NPDFIjjwbJj+8wOoXvDVcwTx8nWM8x4NYvMRQtLvGqz28O4tSvKumtjx1Xpw6xnTSPLraLTvPrME6fi61PEKYYLm9zyy8P1YzvMOFV7wtk2C7ea4pPPOi0zxXwRO9fqwAPWYaR7tv9Tw8vZaEO3mMPrzNzXE8ed2xvJD//zxIsoU7ulI8PDoKPLwnGqC7SZJuvEPE1TysOaA8S3odPIeP1rsgX4i8SCAyPP4+SrwtE8c7EdVxu9cZSjwp42S8TiTUvHSUG70GR5O6jDG7vFevAL3JJCS8CFRkvBNah7yxcY28f2XhvBCW5TtEOx+987LYulDsWzxBNLw7pclxPL8AG72SnT88U3Pju0XcgTwhg2G8xp4FvW2wMDwEssK8pcesO3Cvyju38Bi7s+P3vDsndTsNybs8sfTPvJwW57tTdlK8mcGBO1G2HLyYKt877QOFO8e20zoBgBa8FhM6vL5jCzyDlQU81YMnPMxhRDrb5Eu8wwv9u8EWdjy3izy9r/VkudvcfjuIyJq5XWlSu7xIQ7vqTfc501WSPOGM5jtpPqi8kMUvvGTlVrzLYVc7SVyNPKxoS7xHRfE85TkePSPXJrrFmZ88bzzxO8mT0jt0hpq8iwcAvMnrJTwHbMQ8aDypu1DSRzvsTBQ8oEQaPXfmXDzsp/k7oEIIPD3avbzDtCG7Qh2rO4HfJry6pcu79WuHOznqQTxC8Te8o4tcvJcjfTzyu9w4y5Ctu9JdATxoJHS8mzzRuWi/IDwIdhG8j/GIPHUD87tXf7E5jXNzvAgDpjwJQWE8VIwcurMJ1Dzq3Ac9WT9rPPj4hryoxo47qJRkOgXgATxn1vy84aqyPFpWObloMvQ6oAMIPMin5TzhCiw8wRKjunSiED2BHse8K7Z/PTJ/fDsKuZQ8Z3MSPVc3EL3S+Ky7kFLMO3t+pjwuv6a8Sd8Wu+BicbwDmfc7FK0zPFEizbw7mNK7G/lmvPUsBrw0qcw7Zn6pPGXTnDy1j6I7//sqvVvFl7xM1GK60PGpPCvf3Typ0Uu8+PeAOzWnKL1xTlu5hBgFvIqL3Ltfiz28Z1IAPfvhCzw+Y9C8a7hoPCcQj7yrHQO9jsO2PNC27rxTd3y86YaIu0wxxjtQCbi7EbaLPXfVirwC65U8QbgiPdDPDTyggBg83IvjvFShajw/1hc8eEzXvNrUdjwuoEE9NVmGu5omKzzB3SA83LKzOpdDPT3Q/bu8ZlquvMZvFL0dkdC8KbaQvCFkjbseAz68qy+Kuj5uU70hXw88+2IMvcHoNb1TMoS8yFjhO89Ahzs3weM76YBfu+p2GrxIToA8HfcNvPIp6zvS/do8QukTvcsqxTwhA0i7Blx7uk6yCjyVfY28IdYDvUZqQLsl6rQ8OFpBPEOQN7zs9Be9zIZou6vPrrzyl7G7pySWO+2cc7qhTWW8zrOMPC9RAzmrdcu8lXNlu1EIpTsqfnW8z54LPD4HYrxYb608pqn7ugj90zyLiYY5gjOZvNKDID2JZ1G8O8YLuZF3YDzLa9284njJPLXYMTw52gW9JmZ4PNqjBbtssUo7ltkjvN6/1TwT54e86O3tvGAFVrx3KhK9J0kaPA/dIDwwpIY4TNhVPLemyzv+4QQ8sMhkORWZATsqh3O8/a69vH7tvzy12Yy8DSiruifFArvxejo8kqKbPDvcmrzSBhK8N0CDPJNCuTuCNsc8YGyIPGNA0zpig+s7LE0NPYaMi7mPs4G8kNfEOtjsHzyJraC8ssOePLpFBjp0H6W7KqEvPKEsIjttnzS8G1GVvIRO17skKsK8SrCePAOcFj1HsSu8lb4VPRXH3bzRdY28RoKfPIM17jxyqMU8N9n4u003NbsQSzc9OSdlPIxBgDplR588p4OfPCSvKrzWkea6P4r5u+nnG72b6+M7483nvDHY2DzPDb47wrTXuh4cDTvWhrO8o4OhPD8gkjvVxjO8+K50O9DoFj2knwM7VCFkO+LkgDyIpe+7JSUSPPoaEj3/Gca701KcPIWj4DvPece7jQ6Du3aAjLwSc9A86fVNvG5lgDyVzYa7AZkLOw42ertmAJ48h4ogvBXF8zwxnoy8FcE/PI0rAb3hYFo6JidKuyIXZLw1qhm8LRBKPPVIyLtBYq285NgcvHChhLunbBy8uM2MPHglnLscfXi8/s+6OlfZVb0+V5Y8eRbyvPfiqLy8PQm6F/+qvMAwqTxdEaM8zHCwvC1+a7yRdPq7fOXTu9yINDuBcOI6HyopPCJHzDp7f9K8QNmEvNBx8LyvH9E7f4Nru2HyPjxuFQk8Uk4SO+SoJj1hP7m80K/jO71xcbz1fkO8v3dtPDhjU72FTFA9MdcLvI6evTyIzzg88kpavNWvpzxOZHa8HoQAPVfqszysulK7Vj2huXowCLvuLQg8yP8YPHVGEj0ntIG8osSPPEEwKzzAwFQ7WOAAPTht9rxhrN88jnWwOuIZ9byFnAC8vw7kO4dnkDwwNG08ITKgvFRB3byc0Uq8PwIivDq3Fbzhb8u8+hhsuRSlB73SlaS8lWmsvKopi7ysI7O8iFyMvGt6STwvsYc74RkdOrYJ9btZjh48BeWFvOTugLvdFWg8RSsIu0jHOzxsaCu8U8U8vCxdSzx6gSS9ssnAvLV2mrx7Tp68gk8dvJTPhbyzbku7iWZqPMdBET3fHV68o+5DvNL3ELy2RYQ8SD8uvNWmGTqNFes8xq58PF1LBbyxx0G97NkfPEZnATxvsWc73hiuPOoHsLy4x0E85Kg+PBR9ADycjeW65H7Ou1SwuLrkeW88cvccuzeBlzx+tus7AA8NO3GPuzv8aIq7w6sWO6cwh7yQoya8fjO1u15L6LwsTgs906zBPEfJvzkwOfQ8uQzZvJEhjbyTmsC4xTJJvBjv7TueAiq8Bkk9PE3aAb21EYA87YIQO/+TAzydzCE78tGzvHPFmzw0gmc5lBFOuz53kTwU8Ka8a0YvvTJfWTsZ/oo7aSzGuiW5gjzr+H68NMOsvK8myzytdds7TsPFu65mILzAamA7ZaYSvOog9Lxwxr23ZXYfvFwkernq11q9e22fO+wgaLsPYl+6kPchPJXoED3nUwM8MAfcvOGdtzwdP+K844cGvfwPXDwpUTa9sD7vu7uLhLwTX1S7N21nvLzJqbv1SQy94HYKuoYLGr2mOO683/SnPIz5QLsYE9+8XhzJPMJtn7sCjYa768ZRvHPXHzxX7M48k2e+PHzh2Lvw9T08FXhHO36ThzxPHJi87sXLvOkAszvxPUs7D/9jPDI9mztkEF88OZNTO43Q/7yr/OY87YiQPEdHUjw5d2s7DuERvJu/FbyPPbi8rI5BPQDOQzwrh8q75jrFvMrqnbuFgms8MqkQvZYjszw5jkW8wxYju4EYaDwfZ867pt2oOeWuQDvtWa28BaOcOx0sNDzh5ZI7Zs4YPM6IrDwe2Ym7dLueu1IVUbtuTKc8YWgSvfKuBr0f0Ew8MrETvdY6fjzeH1g8AJoHPHvrDLwc9bc8FQw5OjX3rDyKWva7saM3O7HwMbzOcZa8HKaoPNVquLvV8PO6tTQbPAs/qjtXieA7MmHBPIxzgTvEUjY7Ks24Ovc75DtHghS8Ba/hPP5uzDwvsgw8Qoc1PCm7pLvGnvM8zpF7Oze9YDuPYbo8GiosPB+6rry40XS8hxoXPWa+cjy8L2y8kz+TOtaCJb0fOZ28XEKJvJB/4byFTEQ82M0PvBI6Dz0ROl28uq0OvLDz6rumETq97WnUukedFTzQZ5e7Ij1BPWOUhTvW5vs6XvHnOqxOn7sBKpE7iujsvFpFbDscrbe8ap+4PNoojLvIhU49p6zdPP2O3Dzc4k+84rRMvIK8Czs3hdW65SHNuyDtVbu8lho8hF+HPPrHYz23n4q8YQqFuxINKzx7P7e8kJFcu9DQBjxp+3c6WWGnPJTypTu4iLk8/IWlOh1bET3I2pW6xs6ku6FL+jxEEIC8KSl1PMlBnjxsx5Q6fwAzPKNiMLpsxgw9TDw8PL356bw9Wue6YpGYPF1WxTv18CM8Z5oIORr2Ez3TddG7hVSiOyOIgbyw1LC8kaF5vAlG5ryWWDU8nBaVPETMsbxoJiO8qVmcPNLWNjwf3Xu8aihROp/bpjsmYIq7RxgWvZKwUbyrk6Y7wQ0GvEvBgzz+Eow7zah+vOzKSTxwwBm76f24OQ==
index: 0
object: embedding
model: qwen3-embedding:4b
object: list
usage:
prompt_tokens: 6
total_tokens: 6
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '97'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
encoding_format: base64
input:
- Second document about dogs.
model: qwen3-embedding:4b
uri: http://localhost:11434/v1/embeddings
response:
headers:
content-type:
- application/json
transfer-encoding:
- chunked
parsed_body:
data:
- embedding: 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
index: 0
object: embedding
model: qwen3-embedding:4b
object: list
usage:
prompt_tokens: 6
total_tokens: 6
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '97'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
encoding_format: base64
input:
- Third document about birds.
model: qwen3-embedding:4b
uri: http://localhost:11434/v1/embeddings
response:
headers:
content-type:
- application/json
transfer-encoding:
- chunked
parsed_body:
data:
- embedding: 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
index: 0
object: embedding
model: qwen3-embedding:4b
object: list
usage:
prompt_tokens: 6
total_tokens: 6
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '9665'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
messages:
- content: |-
# Analysis
You answer questions over a document knowledge base. Two common workflows:
- **`analysis_search → analysis_cite → answer`** when the answer is grounded on specific document content. Call `analysis_cite` with the supporting chunk_ids before writing the answer.
- **`analysis_execute_code → answer`** when the answer is a count, aggregation, listing, or structural computation over the corpus (e.g. "how many documents?", "average page count"). No `analysis_cite` is needed when no specific chunks support the answer.
You can mix the two. The rule: cite when grounded on retrieved evidence; don't fabricate citations for corpus-level computation.
## Tools
### analysis_execute_code
Execute Python code in a sandboxed interpreter. Variables persist between calls — you can build state incrementally. Use `print()` to output results.
Inside the code, these functions are available (use `await`):
- `await search(query, limit=10)` → list of dicts with keys: chunk_id, content, document_id, document_title, document_uri, score, page_numbers, headings, doc_item_refs, labels, picture_refs (subset of doc_item_refs labeled `picture`)
- `await list_documents()` → list of dicts with keys: id, title, uri, created_at
Available modules: `json`, `re`, `math`, `pathlib`
Not supported: class definitions, generators/yield, match statements, decorators, `with` statements
### analysis_search
Search the knowledge base directly (outside code execution). Each result has a `Type:` (paragraph, table, code, list_item, picture). When the Type is `picture`, the corresponding figure may also be attached to the tool response as an image alongside the text — use it directly to answer questions about figures, diagrams, charts, screenshots.
### analysis_cite
Register the chunk IDs that ground your answer. **You must call `analysis_cite` before writing any final answer that uses retrieved evidence — search results, items.jsonl rows, toc.json nodes, or content.txt content.** Skipping `analysis_cite` leaves the answer ungrounded and is treated as a failure.
`analysis_cite` is **not** required when your answer is a corpus-level computation that doesn't draw on specific chunks — counts, aggregations, listings, averages across documents. Don't fabricate citations for these.
Chunk IDs come from two places:
- The `chunk_id` field on `search` / `await search(...)` results
- The `chunk_ids` field on `items.jsonl` rows / `toc.json` nodes (when you ground via direct file reads)
Do NOT cite `self_ref` (`#/texts/N` style refs), `position`, or any other identifier-shaped field. They are not chunk IDs and the tool will reject them. Copy chunk IDs verbatim — they are opaque UUIDs.
## Document Filesystem (inside execute_code)
All documents are mounted as a virtual filesystem at `/documents/`:
```
/documents/{document_id}/
metadata.json # {"id", "title", "uri", "created_at"}
content.txt # Full document text
items.jsonl # Structured items (one JSON object per line)
toc.json # Section tree derived from heading_level
```
`{document_id}` is an internal identifier, not the user-facing `uri` (filename, URL, etc.). When you only know a document by its URI or title, use `await list_documents()` to enumerate ids and match against `uri` / `title` — that's a single call to the host. Iterating `/documents/` and reading every `metadata.json` works too but is much slower on portal-scale corpora.
### Reading files
Always use `Path.read_text()` — do NOT use `open()` or `with` statements (they are not supported).
```python
from pathlib import Path
import json
# Discover documents
for doc_dir in Path('/documents').iterdir():
meta = json.loads((doc_dir / 'metadata.json').read_text())
print(meta['title'])
# Read full text
content = Path(f'/documents/{doc_id}/content.txt').read_text()
# Read and parse items
for line in Path(f'/documents/{doc_id}/items.jsonl').read_text().strip().split(chr(10)):
item = json.loads(line)
if item['label'] == 'table':
print(item['text'][:200])
```
### metadata.json
Document metadata: `id`, `title`, `uri`, `created_at`.
### content.txt
Full text content. Use for regex or keyword search across a whole document.
### items.jsonl
Structured document items. One JSON object per line. The row's **line index** is the item's position — `item_range` values in `toc.json` are line-slice bounds into this file.
Each row carries:
- `self_ref`: item reference (e.g. `"#/texts/5"`, `"#/tables/0"`) — used to cross-reference with `doc_item_refs` from search results
- `label`: item type — one of `"section_header"`, `"text"`, `"table"`, `"list_item"`, `"caption"`, `"formula"`, `"picture"`, `"code"`, `"footnote"`
- `text`: rendered content (tables are markdown with `|` columns)
- `page_numbers`: list of page numbers where the item appears
- `chunk_ids`: chunks that contain this item — pass to `analysis_cite()` to ground an answer that read this item directly
- `heading_level`: H-level for `section_header` rows; `0` on non-header rows
### toc.json
Section tree derived from `heading_level`: `{"doc_id", "title", "tree": [...]}` where each node has `{self_ref, level, title, page_numbers, item_range: [start, end_exclusive], chunk_ids, children}`. `item_range` is a line slice into `items.jsonl` — `items[start:end]`. `chunk_ids` aggregates the citable chunks across all items in the section — pass directly to `analysis_cite()` to ground a section-scoped answer without a corpus-wide `search()` call. `tree: []` for docs with no headers.
### Cross-referencing search results with items
Search results include `doc_item_refs` (e.g. `["#/texts/48", "#/tables/0"]`) that correspond to `self_ref` values in `items.jsonl`. To find which section a hit lives in: locate the item by `self_ref`, take its line index, and walk `toc.json` to find the deepest node whose `item_range` contains that index.
## Strategy
1. Search first.
2. Identify the chunk_ids from the search results that support your answer and call `analysis_cite` with them. Then write a concise answer.
3. Reach for `analysis_execute_code` when search results are insufficient or when the task requires computation, aggregation, traversal across documents, or section-scoped reading. From inside code you can search again with different terms, or read `items.jsonl` / `toc.json` / `content.txt` directly from the document filesystem.
4. For questions about a *known document's* structure ("which section contains X", "list the sections of doc Y", "summarise section Z"), read `/documents/{id}/toc.json` first. Each node carries `item_range` (a slice into `items.jsonl`) and `chunk_ids` (citable). Prefer this over `search()` for in-document navigation — `search()` ranks across the whole corpus and can return chunks from unrelated documents.
5. Before writing your final response, call `analysis_cite` with the chunk_ids that ground your answer.
You MUST call `analysis_cite` with at least one chunk ID before producing your final answer **when your answer is grounded on retrieved evidence**. Skip `analysis_cite` in two cases: (a) you are refusing for lack of information, or (b) your answer is a corpus-level computation (count, aggregation, listing) that doesn't draw on specific chunks. In those cases do **not** fabricate citations.
## Important
- Variables persist between `analysis_execute_code` calls — you can search in one call and process results in the next
- Use `print()` to output results — the output is your only feedback
- When you write code, execute it — don't describe what code would do. But not every question needs code; simple lookups are best answered by `analysis_search → analysis_cite`.
- Use `await` for all async functions inside `analysis_execute_code` (`search`, `list_documents`)
- Use `Path.read_text()` to read files — do NOT use `open()`, `with` statements, or `collections` module
- Do NOT include chunk IDs or UUIDs in your answer text — your answer should read naturally. Use the `analysis_cite` tool separately to register citations. `cite{...}` markdown-style inline references do nothing; only an actual `analysis_cite` tool call registers a citation.
- **Before you write your final answer, invoke the `analysis_cite` tool with the supporting chunk_ids.** This is the last tool call before answering whenever your answer draws on retrieved evidence.
role: system
- content: How many documents are in the database?
role: user
model: gpt-oss
reasoning_effort: high
stream: false
temperature: 0.3
tool_choice: auto
tools:
- function:
description: Search the knowledge base for evidence to analyze.
name: analysis_search
parameters:
additionalProperties: false
properties:
limit:
anyOf:
- type: integer
- type: 'null'
default: null
query:
type: string
required:
- query
type: object
type: function
- function:
description: Execute Python against the sandboxed document filesystem.
name: analysis_execute_code
parameters:
additionalProperties: false
properties:
code:
type: string
required:
- code
type: object
type: function
- function:
description: Register exact retrieved chunk IDs as citations for the answer.
name: analysis_cite
parameters:
additionalProperties: false
properties:
chunk_ids:
items:
type: string
type: array
required:
- chunk_ids
type: object
type: function
uri: http://localhost:11434/v1/chat/completions
response:
headers:
content-length:
- '1468'
content-type:
- application/json
parsed_body:
choices:
- finish_reason: tool_calls
index: 0
message:
content: ''
reasoning: |-
The user asks: "How many documents are in the database?" We need to compute the number of documents in the corpus. According to instructions, for a corpus-level computation that doesn't draw on specific chunks, we should not use analysis_cite. Instead, we can call analysis_execute_code to count documents.
We need to run code that uses await list_documents() and counts them. Then print result. That will be our answer. No citations needed.
Thus: call analysis_execute_code with code:
```
import json
docs = await list_documents()
print(len(docs))
```
But we must use `await` inside the async function. The environment expects us to write a Python snippet that uses await search, etc. So we need to do something like:
```
docs = await list_documents()
print(len(docs))
```
Yes.
We should not provide any analysis_cite call. Just output number.
Thus final answer: "There are X documents." We'll get the number from code.
Let's run it.
role: assistant
tool_calls:
- function:
arguments: '{"code":"docs = await list_documents()\nprint(len(docs))"}'
name: analysis_execute_code
id: call_xsxnvqy8
index: 0
type: function
created: 1784300378
id: chatcmpl-793
model: gpt-oss
object: chat.completion
system_fingerprint: fp_ollama
usage:
completion_tokens: 241
prompt_tokens: 2142
total_tokens: 2383
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '10929'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
messages:
- content: |-
# Analysis
You answer questions over a document knowledge base. Two common workflows:
- **`analysis_search → analysis_cite → answer`** when the answer is grounded on specific document content. Call `analysis_cite` with the supporting chunk_ids before writing the answer.
- **`analysis_execute_code → answer`** when the answer is a count, aggregation, listing, or structural computation over the corpus (e.g. "how many documents?", "average page count"). No `analysis_cite` is needed when no specific chunks support the answer.
You can mix the two. The rule: cite when grounded on retrieved evidence; don't fabricate citations for corpus-level computation.
## Tools
### analysis_execute_code
Execute Python code in a sandboxed interpreter. Variables persist between calls — you can build state incrementally. Use `print()` to output results.
Inside the code, these functions are available (use `await`):
- `await search(query, limit=10)` → list of dicts with keys: chunk_id, content, document_id, document_title, document_uri, score, page_numbers, headings, doc_item_refs, labels, picture_refs (subset of doc_item_refs labeled `picture`)
- `await list_documents()` → list of dicts with keys: id, title, uri, created_at
Available modules: `json`, `re`, `math`, `pathlib`
Not supported: class definitions, generators/yield, match statements, decorators, `with` statements
### analysis_search
Search the knowledge base directly (outside code execution). Each result has a `Type:` (paragraph, table, code, list_item, picture). When the Type is `picture`, the corresponding figure may also be attached to the tool response as an image alongside the text — use it directly to answer questions about figures, diagrams, charts, screenshots.
### analysis_cite
Register the chunk IDs that ground your answer. **You must call `analysis_cite` before writing any final answer that uses retrieved evidence — search results, items.jsonl rows, toc.json nodes, or content.txt content.** Skipping `analysis_cite` leaves the answer ungrounded and is treated as a failure.
`analysis_cite` is **not** required when your answer is a corpus-level computation that doesn't draw on specific chunks — counts, aggregations, listings, averages across documents. Don't fabricate citations for these.
Chunk IDs come from two places:
- The `chunk_id` field on `search` / `await search(...)` results
- The `chunk_ids` field on `items.jsonl` rows / `toc.json` nodes (when you ground via direct file reads)
Do NOT cite `self_ref` (`#/texts/N` style refs), `position`, or any other identifier-shaped field. They are not chunk IDs and the tool will reject them. Copy chunk IDs verbatim — they are opaque UUIDs.
## Document Filesystem (inside execute_code)
All documents are mounted as a virtual filesystem at `/documents/`:
```
/documents/{document_id}/
metadata.json # {"id", "title", "uri", "created_at"}
content.txt # Full document text
items.jsonl # Structured items (one JSON object per line)
toc.json # Section tree derived from heading_level
```
`{document_id}` is an internal identifier, not the user-facing `uri` (filename, URL, etc.). When you only know a document by its URI or title, use `await list_documents()` to enumerate ids and match against `uri` / `title` — that's a single call to the host. Iterating `/documents/` and reading every `metadata.json` works too but is much slower on portal-scale corpora.
### Reading files
Always use `Path.read_text()` — do NOT use `open()` or `with` statements (they are not supported).
```python
from pathlib import Path
import json
# Discover documents
for doc_dir in Path('/documents').iterdir():
meta = json.loads((doc_dir / 'metadata.json').read_text())
print(meta['title'])
# Read full text
content = Path(f'/documents/{doc_id}/content.txt').read_text()
# Read and parse items
for line in Path(f'/documents/{doc_id}/items.jsonl').read_text().strip().split(chr(10)):
item = json.loads(line)
if item['label'] == 'table':
print(item['text'][:200])
```
### metadata.json
Document metadata: `id`, `title`, `uri`, `created_at`.
### content.txt
Full text content. Use for regex or keyword search across a whole document.
### items.jsonl
Structured document items. One JSON object per line. The row's **line index** is the item's position — `item_range` values in `toc.json` are line-slice bounds into this file.
Each row carries:
- `self_ref`: item reference (e.g. `"#/texts/5"`, `"#/tables/0"`) — used to cross-reference with `doc_item_refs` from search results
- `label`: item type — one of `"section_header"`, `"text"`, `"table"`, `"list_item"`, `"caption"`, `"formula"`, `"picture"`, `"code"`, `"footnote"`
- `text`: rendered content (tables are markdown with `|` columns)
- `page_numbers`: list of page numbers where the item appears
- `chunk_ids`: chunks that contain this item — pass to `analysis_cite()` to ground an answer that read this item directly
- `heading_level`: H-level for `section_header` rows; `0` on non-header rows
### toc.json
Section tree derived from `heading_level`: `{"doc_id", "title", "tree": [...]}` where each node has `{self_ref, level, title, page_numbers, item_range: [start, end_exclusive], chunk_ids, children}`. `item_range` is a line slice into `items.jsonl` — `items[start:end]`. `chunk_ids` aggregates the citable chunks across all items in the section — pass directly to `analysis_cite()` to ground a section-scoped answer without a corpus-wide `search()` call. `tree: []` for docs with no headers.
### Cross-referencing search results with items
Search results include `doc_item_refs` (e.g. `["#/texts/48", "#/tables/0"]`) that correspond to `self_ref` values in `items.jsonl`. To find which section a hit lives in: locate the item by `self_ref`, take its line index, and walk `toc.json` to find the deepest node whose `item_range` contains that index.
## Strategy
1. Search first.
2. Identify the chunk_ids from the search results that support your answer and call `analysis_cite` with them. Then write a concise answer.
3. Reach for `analysis_execute_code` when search results are insufficient or when the task requires computation, aggregation, traversal across documents, or section-scoped reading. From inside code you can search again with different terms, or read `items.jsonl` / `toc.json` / `content.txt` directly from the document filesystem.
4. For questions about a *known document's* structure ("which section contains X", "list the sections of doc Y", "summarise section Z"), read `/documents/{id}/toc.json` first. Each node carries `item_range` (a slice into `items.jsonl`) and `chunk_ids` (citable). Prefer this over `search()` for in-document navigation — `search()` ranks across the whole corpus and can return chunks from unrelated documents.
5. Before writing your final response, call `analysis_cite` with the chunk_ids that ground your answer.
You MUST call `analysis_cite` with at least one chunk ID before producing your final answer **when your answer is grounded on retrieved evidence**. Skip `analysis_cite` in two cases: (a) you are refusing for lack of information, or (b) your answer is a corpus-level computation (count, aggregation, listing) that doesn't draw on specific chunks. In those cases do **not** fabricate citations.
## Important
- Variables persist between `analysis_execute_code` calls — you can search in one call and process results in the next
- Use `print()` to output results — the output is your only feedback
- When you write code, execute it — don't describe what code would do. But not every question needs code; simple lookups are best answered by `analysis_search → analysis_cite`.
- Use `await` for all async functions inside `analysis_execute_code` (`search`, `list_documents`)
- Use `Path.read_text()` to read files — do NOT use `open()`, `with` statements, or `collections` module
- Do NOT include chunk IDs or UUIDs in your answer text — your answer should read naturally. Use the `analysis_cite` tool separately to register citations. `cite{...}` markdown-style inline references do nothing; only an actual `analysis_cite` tool call registers a citation.
- **Before you write your final answer, invoke the `analysis_cite` tool with the supporting chunk_ids.** This is the last tool call before answering whenever your answer draws on retrieved evidence.
role: system
- content: How many documents are in the database?
role: user
- content: null
reasoning: |-
The user asks: "How many documents are in the database?" We need to compute the number of documents in the corpus. According to instructions, for a corpus-level computation that doesn't draw on specific chunks, we should not use analysis_cite. Instead, we can call analysis_execute_code to count documents.
We need to run code that uses await list_documents() and counts them. Then print result. That will be our answer. No citations needed.
Thus: call analysis_execute_code with code:
```
import json
docs = await list_documents()
print(len(docs))
```
But we must use `await` inside the async function. The environment expects us to write a Python snippet that uses await search, etc. So we need to do something like:
```
docs = await list_documents()
print(len(docs))
```
Yes.
We should not provide any analysis_cite call. Just output number.
Thus final answer: "There are X documents." We'll get the number from code.
Let's run it.
role: assistant
tool_calls:
- function:
arguments: '{"code":"docs = await list_documents()\nprint(len(docs))"}'
name: analysis_execute_code
id: call_xsxnvqy8
type: function
- content: |
3
role: tool
tool_call_id: call_xsxnvqy8
model: gpt-oss
reasoning_effort: high
stream: false
temperature: 0.3
tool_choice: auto
tools:
- function:
description: Search the knowledge base for evidence to analyze.
name: analysis_search
parameters:
additionalProperties: false
properties:
limit:
anyOf:
- type: integer
- type: 'null'
default: null
query:
type: string
required:
- query
type: object
type: function
- function:
description: Execute Python against the sandboxed document filesystem.
name: analysis_execute_code
parameters:
additionalProperties: false
properties:
code:
type: string
required:
- code
type: object
type: function
- function:
description: Register exact retrieved chunk IDs as citations for the answer.
name: analysis_cite
parameters:
additionalProperties: false
properties:
chunk_ids:
items:
type: string
type: array
required:
- chunk_ids
type: object
type: function
uri: http://localhost:11434/v1/chat/completions
response:
headers:
content-length:
- '328'
content-type:
- application/json
parsed_body:
choices:
- finish_reason: stop
index: 0
message:
content: There are **3 documents** in the database.
role: assistant
created: 1784300379
id: chatcmpl-543
model: gpt-oss
object: chat.completion
system_fingerprint: fp_ollama
usage:
completion_tokens: 14
prompt_tokens: 2397
total_tokens: 2411
status:
code: 200
message: OK
version: 1