haiku.rag/tests/cassettes/test_client/test_client_ask.yaml
2026-07-24 15:26:17 +03:00

564 lines
48 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

interactions:
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '114'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
encoding_format: base64
input:
- Python is a high-level programming language.
model: qwen3-embedding:4b
uri: http://localhost:11434/v1/embeddings
response:
headers:
content-type:
- application/json
transfer-encoding:
- chunked
parsed_body:
data:
- embedding: d44ZuS2LH738KR88TwmQPEp2fbrd04+6OUedPRdehjvdRUo7uInZvHlriD1Xyu+7bDCHu2zqmbxRo5g8rRjpua3jAz2E+FK9VTnPvPfTU7uW8467s8pDvAuNCz3a1q48GwQ4vam16Tzly5W8iRofvXj0gLvSiDA92zbcPKx2jjyUo5g8mcoTPB0yPbpHF7i8wb4xvDbEmbtBiqa8F75AvNw5trtFldo7RG9mO5C3Fj2mDDa69szgvFYQwDttmYk7cksrO8Qs/rxt60Q6IT09vL1ZBT2vccG8u2w7PLMmizxrIu06/GEJvHe1Hb0mDUq9/LoGuznBp7vptxK9KPu7uhiFyLtW1x28xbl7OWQ+m7zSQNc73ZHROZNMCr12cnE9W86wvO4P3zyj/gA8SRhuvF9wIrxKBIo8ujwFvT4ekzz2NY28t+tEO2LlsTsk5A49UQRRPKZ/ejyCoao8RU+4uzhd57xsU5e7bvM6PIpYAz0P9G+7zZchO82QDTvc0Q48bPMFvDMf8LtJni28HBovu76AKjwCCHW8D1cvvPhIQbqmMKE8gUxAPJYlW7xFcFg8MB1WPGWfvTp8+gC6RwP4u5/oxLuY5J48zSvrO4bnhjtJede7D5oWPZgCrDvI6+s8Rlqou6Ms0DzVqE08oLYZvdU3wDyb1Ge8GGPKu1ymfjxviDe8v/DMOATPIDw015O8iejNO7cJnruYxA08qdCVu+oHozr4vra8av5KvKwEqzx0r8U7UhXsuatVl7vt5fM8QldGPIs6ar2Ui9y7AZjbPI4M4TvlU3o7FZF2O/UHlbwgMtC7jk24PDs67zsf/A08eHMlO/DkhDyzhgu8kl2FPAxN5TtSsz28idjxO2Ln3TvHPYW8ySUJO8e92LyBdp06VK4rvMoAqrxgoaY8KtE5vH8XHrx3byE8g5AKu0qFkjqOPVi8CGNTOvLLrzvvhAY81llLO/EnILpf/gk8KQO9O8ZIVbsUk587IN4SvAh3zTyTkIU8iaGHurJVOryofqC8hljiO/YGtTtzclc7V91gvDJiU7wuqBu9GLy9OkQcjjzurBk9AIqfPJ6ajjsP6Sq8VyaYPL/mljxtxny6aszvu5BQlrrdcAU7CJG8O84GjDlX1W68IlyEvcm6JbzjCfK2CQ+IvIZTobwuRV87oCEYPZ344buoiew7MLQAux2wk7sr5HG8v8CPPLEPuruCT6g7YiW9O9OkMrzsxTQ9wOkdPHWtiLvJuIa8pr5IvGI9wTsPdmO6BqeSu5OPgru0KKC8ofZYvGzJd7x89yM8KqYGPF/XYzxHjZK8acHNu/0mkrvHfiY8gc5xvCRUMTyyai06NhWQPJJZALy3zJw84xzUu1ryGLyJRZc8Ymzau0+bwzouUIq8w6LKPHZZE7yCZ1Y79D+eO0C7Er26ziQ8r8T9u/vAAzwBF0K7oHnOPLZT5rtlO4u7PRTcuwYTlrtTgnK8ggO+PKVcpDtLNUk8NII5PO/7iLsrzZA7V0GvvGxzOjyM6KS81Ktpu5dVRT2vGja73bnhu1W6tjy5Rzu7BgwMvYmnbzzd2hQ8Olxbvc//BT01c5Y7077qu+30mbxO3hC9rtsPPKJU2TqRm327LvKLPAPvhDt6iG471OcWvF2ylzuDX7i5CndWPIGSH7w44UK8/lZeO2ROjLyDLN47+7fRurR+5bshQ4e7XlaQvJnNCr1HAps8AMoXvaveD7z5B268Ohp5vTTdCL3ww4s89YdjvB8hTLglBiA8wqVEvE5utTwrJii9MLtIvIFKyDu2qgK8FruVvPAd8Dx/U2O7MyiVu+xAl7ukVYY8xzHxvFKpgrxUxCs8u+shvOyCbDxh8sy740Geu4LaFr3zSwK9LMOTvINvtbzHD4C86p4TvNvAcTuiPDA7BFsQvWeHtry3YMa834gTvEhTAT3Rjpu7MHKjPIAArrs3Vng8vM77vCquyLvOyw893msHO7lygjuEGS69pN2IPGs3FjxyPQi6mLYYvLdtH7wgf2S8Wm0POwfAg7vBBI076KHSvC6WnryAwDo8rD16uzOVETwRxpO8L1fSO+3umjsLqLw7OOfFuml5u7pwRtw7SG1YPY0dDr1uWSM8wfg6O97bFjxyhXi8MDbDvK+s/7uGGLW7mQ0SvY+6WbzWJ4I7xn66vEMkgzzsPQs9WHaOvMtCRjtL6h66qT/KuvLzqzwHYIU8VL8dPaO1gzwdOLY8amftvGS2PL0JSn47K1d8PJ+SETtex7w7XNEPO+H7DjwTy8m6T3b7uaP3AD2YNrO8L5NJPKwwxTwLkp68L+s4PDlZ3jxRzZu7cCW6O19GTr3gvx095UYrvCCSIjyjm0G8aj9EO8mo9DumYYO6Rsb9vK9dajxxkbs8TpqEuw6ZkDyuM0K88ad0vL1r97szwzA8e+LAvCy9U72Z/YE8saN2u+Zkk7xpCbG8BpSivG5VdL29m965Wa8wvChzjTxFBmI8vQOwvLX+kbyt7JA8nuSZvLnqsDterqy8vrRlvIpjsbw+RFI8HQKdPF0ALTpREEY8m7SAOzvECr21JqE8p8XoPP91hjw1pCG8goKaO4vqCTv5JKM7Xyw7PHI2CT1mEuG7560vvN77szwaag28utvBPAScBjviJZC6Mo4ZPNgw+ztXBjq7VDtkPMKITDwxrYU8fAHkO6SnAD1Do6i7dtf6vA65PDxGwJk8WXgivGRl3js4Fu+77rq0vIYCHTx34+86m94XvQysvbztimK6x90LPUA3PTx7+7Q72YayvNcqgDwNixO9SYekPOFz8Dtu3FC9n1BpPFgTzDwM1bG9l0fzvAyjyLyKHpu8GL4qPHt+z7z2Eb08lX1lvSShmTwFiY08NxDDupFIObo/W3M8I8jcuwOBPzwz0mK8Nj+WO7kK6TzlsMY7jZ+au9J+KbwE2YO7W0OivNVctjvMPx66mAvnPOCmEb0uZKW87wGoPFddCzyFKCQ9Fsf1PGG9djyVZbo832/FPENKirwzFTK8zrkrPBoy8rypf2a8E4V/PEkJL7xrrmO8lcACvHYttLts9HQ8EvizO97O/bxKXrY8bG+NvAYL0LuwPmw7tSGTulmQAbxjapq7qFCXO2Y3IrwZIms8N2ehvFN147wSI+A788QovGqJRryGGsW8aZWLPE8/XDwMXJc8rCMePfpCabw+TcW8CIMZPGAFHbxAVAS9OSz4POqQFry0mTk8mgkCO1P+c7sRbsI8nTpbvGjojzwbG1M8fD/dOtmRx7wWzjk8vZMrvDb08jwSLSA94NCXu9lE+bkIqRG803Twu7x9sLu2Oyo7Z0mHvDb5U7xYi4a9vlwpPdgv2Lx1vGi82c3+PDbIEb38JJ+8nlTKu/oj3bya4Rg9hJIiPEX6g7xMOCU8tUPuvG5Oo7xLiLW8qisLvMN6L7sRO7w8kfAIPeactLyEhQA8dROEPJcPu7zRz7G8/QklvazoLzuVw7k7PJnAOTY1mrzmsQE8yXeKOzVCDrzodMk8UMEfPRg1ULxTJ9E8/JGKO+EzvDoiCrY7nx4DvOwQRbzJk0w8KmtOvRNncLyoVTk9JcTvu2Bu4jyj9428Pqp1vKd2R7sbqwO8/bd0vAU3Kj0PMxA9wb83PYJrZrw1DYg8vsKJux8O17xK47e7ePPoPCybtDx3kDy9HmvTO65xCbyQB9I7HoZfvKniwztQSJg8rQVuPDeZFrwJMiQ7BYyAPGRAkLrRG6u6bzYovMHHirtFaRE7APKrvNEJlLznx0m81ACKPXiaCru7j6g8+5I6uk2JFTtpiBG9aBr2vOzOp7x90TM8DHXFOxxf5TxzuxS9mT+qvGdPprzVX5A6U+asPKYS3jysHsu84p+vO627MTuHXZY7AWRbO77wZLsbf5i8xBBpPWbe0zzz3Z07T3yZu/KE1Dwfinm8r9xpPIiPizzrEYe6acIsu4sQJLz/uEo8bLqgu0VkrzylhXY8+4zHPHcwODzZ35e8EetXvLACRjyRN7k8iIbtu/WmrjzExQW9femLvOEhtDxgKL48H0N8vHMvuLsKwi08LwZLPCn8DL2rfie8ni0JPZOjyLqB9IS70ut8O8gLszyc1z28dS6ZvGut5ztWXye89j+iPG5bzDsYkL66cW9xu5tI5Tx5t/k6153Su3EyPT10IE+8ANaBvDvxR70VHw28WYuyvOJ/rbr6vQe6IloEvcgZ/rzJyAi9mfLevA7SFrxbXEw8ugUBvYVoorygNtM8YRhEu1gLnjoqGXI8BCsavRbtgzx+ixM8SviavNYWkTxfKhW8dW5mvNtg7TyAyrk7tlYjvZH9hjvrh888lYwkPETXjLsUDw88QLyhPNznSjwpGMU8yiMcPftLL70MJIq8KHVUPd3NczuQUZ66Uw4QvEprE7xfL0w8A5rAvI1lSD19Srw7KJaVPKQYULzduEE8DzhcvKGoTTz5f+w7WHaNvKgXazu9IFO75YAUvQaBk7sGfya8VNH9PA2YlDuEEza817SAvLvMgruq2YS8NqJiPDE4HTwyvRY9VAK9O0AF+7wUAxY9TWqZvNjXCzycS5c8486BPNVZ0jwTBys8SGWlPITqxLv3Wwe5QDVIvfUJ7LxrJ047Q6jwPOLOlTrVqfw8F3qbvHpLTLwghde7k2oAPNsQnTxEx5u7i/S/u90MIbw/s5M8zZ4Bu3MPrrvM7xs9euVjvGTOEbyY5/C8dl4fPZADfbymS9a8nntFO6REvDxnkVA87bqavEeYIT3DJr87Q20BPV/JdDwWal+86TRTvDFYMLvF3Em9AfU/PP2o9btPG5I7cWREu23FUTrscEo7m8HgPFf3Ej2ECc08C02cPIGMV7xGmYO7WrkAPIpPMbz9Y2I8+gC0PNlxpLz1ZVq65W5JuwPDAL2fZ249oFwxPKFFQb0iqDo8Fk2wvF2EDLyqVhO8HijtPJMj+zn7Eya9wW0FPRTtH705dvQ7AIQXvJ8Wpzske5O7Ubt6vH8ytzvaUH28jPAzPO0bWTzSWiI82BbxvJ7cmrwMarO4NnLIO9dVxjzpfbo8BmqlvG3ROLyCigE9fsoRPImsHT0d+9S7KUvnu4hOBLyrhb48Q0Q0vAeipTyxFoi8WftCvHhogDyFaqE733fOvDWhA73MwaI8tXJrO27XEDwGs7i8L3RCN6YcsTxQb7Q8We6GuVDysbvfu848rcBxvfjccbxaS6e75P/JPNjB2jsypFM8raRBPYO+KT3u2ga9h7d9O/4znzv2ouY7llYJvH17x7waR248DFNxvIbqUDzLKWO8W+7sPLghrrxk4pI8UXbEO4f+9jvRR0I811m2vH9heDxqkIc8EWKHOyjikLy/IrY87+ntPI7CFbwypQw91i9cvMNqiTx9zQw8zjYMPa4B+jvFJ1+78TwnPMKfobwm7c06mhbYux2thbx2wEy8/NfXvG0sX7tgBBa88Rs0u9fkybx/6es4ASrFvHKblzxuIFW8rOoRO5L5rzyFYby6GRaXvJdoBzzb4Ci9kjs1vC7XBLxay7s8dNwDO4OePLzFfdW72LM4vITj/rs6jaC85lNoO5EuHD1Y0y27NrK6vBZ/ubxa+ic8KnoSuyt0ZLzBbio9Kx8Nu5TUcT0inaS7zmI7vM1xubvrxps70W7KPLShSzzriVQ6LDPVu61+qzwyEj486otUPdp5ajt2PsW7ke/PvJKDQryRlEU81ZKouTk8JLs3WCM8n3bovKDyTTzFzUc8a7lOPKfWwbz40yW8EumZPDVosbwlxNs6PpaUvHhx/rp4G628ZYdSvLPN1bu2ZZY8qF/XPBPpkrz42lS70Lb0O6GVoTwvryQ9PWewORsEB7yUIyI9e9rdvI/OLLxnbew7d7pnvPnl+LtmOrg7bdpaOp4S5TwAtp48gogJu+RA5DyARQ08sp1gulH9QryMjq+7ZEdUvBiQ+ztHRkQ7RhiRu7FRyDtE7VI7p2GgvHVCTzxR++q8ivgjvB6T2zz62kY8aCpsvMh4xzxE68q7FyGIvK3AdLxI3TM7DEXwvBVhLDtvFDM87Q0KuyUMn7tFLhC9Tp8XPeCdKD2z3DU82YNuu49d4zscOn88qVn8OIb7IbsFuKQ7AynAvAf95LyNRmU9P9OovNh0xjxfaIE7jvJqPHym/bqPjDy8FkJ3PA7KtbnSXhu8lNeJO42L+TyeY8K7zznEPJUGnTywuOe7f7YwvGCmvjyB0fI8mrDNvLnJED3YOo88Yc29PNwHrjsZ/667rSkCvVmp2Lw1VgA6Xe2HPHZy5Lvu69Q8IqCXPF+Lg7tfy6Y7M+LFvFe53zxlm3C8msG7uGlJL7y9H7y8HNTzPL08EDyFHLU8k+LEvG3VcrwlVJY8vDgVvA7Hlbz5qXe6RVbUPE1LpDwNuxW6s75qvVthEL2+BEA7XeG6uybGBL0D95E7dyDQPEkvXjyRgae8fd8qvX91VDsRdoW89BezO/tDp7tybpU8CWzAundj7zzNKtS8Mr9tupYTBTxB6JG8fZDtPIM28Ly6JBs97K7zuxvpnrpfZTG8zQg1vILyELw0LCq8MpwHPKHpE7ww3TE7OZWLO0eY8rt93xA9c1lYO33qhTxUEmI7+0wQvGIh8rr5yUE8x3w0PWDz2rt77/W3lI1BO8s0fDx5PL67S9E/uwt7CLzErp48PEBxPDbqi7xETAq9UCiMvE/R4DzvaAQ9BMMEvHYUiLjIy3E8WK0kvPeEDTydDqw8eP64vK4ZNL3aiFE6G74PvDeHzLvrMMi8v4/DvPvHCz0PcWi8/H+CPF9TwzyFxgM9OR2dPDg+ID0XZ5K7G9SLvKJloLz1Pfa8MYH4unaWOjx2oAu9Qx1uuwsfOzz9ewO8i0CNOd5yV73GYZC8q9+ePMKSuLx1Wxm98k6mvBPx7TsM8vg7ZI8YvGOUbbzDVxe8oe21PL99rjx9T8+8E3Uou7nEgbwWaT88DZ4yO1XzK7x+u2e6vubivHX4KT0mFYs6z5EYvSgvUT2NgiU8QhtrvMKZAzxE15g8KMtHPYqJ+LuAbpK80iICvVcIzblGFae5HOgSPUnjNbz4XLo8ibQWPAuhvjw3uLw7dV4HvIrpOjzOIuK7lkYCvDpb6rybu7I8jgLjvMeeMD3Qz+s7q4HdOz3luLnJSAA8Zeg8PA0fw7yoei28iyr6PLkhKL1bNz48nNysOxWL6DsCmFs8/hUXPCVO1jspBTA8MqvFvFRBszzQB548/qMIPWliBD0XU/U7WLpSvN7b7zrj9z+8lC57vI68srxZ2NS8k3rWO/7ZJjs8fh69JPnKPE4arTxyZMc8Dqd+vAi+Jj3tkKu6tT1WPVyYgbwnwNa7mQMYPd6jgTy+LX48WinZPF8vKLtN5g29SHCkPMMYgzssWk48+pWEvMul7DwptVc8O9tRuw6D9Dv1r9o8/ktrO0yasbx+i/+2Po9GPAjKNjwMy6Y8l3Q9vNwEWbuWAbg76Y5WPNFLHTz3fzG8/piyvKxV6jrDjAo9P2QbPJJeirkuPYg8Z146vCktxrwglxq9QGCEO/HtRj0JjQC9q16mvL82gTzOE8U8WHm5PFUK77zl2wY8fmSnvIcWPzxBj127VTNMu2ChiDycjfW7fLvDvPYnrTwvohE8FDy8O5MK4DsfZi88IO+GPHx81Lwy7Ro7+hocvOD7AD0xBqY7w5yiPI9Ggzwe3lI5Wc0HPBJYizuLU908R/ZXvIPN4TqEQwk80deDuZKjJDxgByk9kTcoPXncFjxsIBa8jWO1PH+Oojxnf5w8xRDaOg45Jrxb74k654iSvHbbML1xc+y8o7oEPZjTgruX01Y8rWGlOxARrbz4QQG7ZOYFvEyvjTw/cya7X3PrvI+d9DybMCu556Lju2CZ9LyVu448BDpau29Ft7znf7o7xHo/ONzomTyAJa68rmuoPEg7lzp4/HO9gt91vEFJlryq6Le7DiyYPObTKjzModG7vpvOvHTk+bvezJ08oYeXPCAAM7w3tsY60/wOvc5K0TxpHI68CTx8PJo3Pjx//o88OnusvC05wDhWq0K8GtuDu93/KDyvUqO534VrOx7mWbuw0Cc8dtcEvLYtX7z3SDu78yE0vIhVqTz6r0q8q+0YvbdXi7pwkHQ8nk+JvLxiv7x0uHy7sTAXPRxY+rzAvBu6O71VvJL87bszl4e8xPTCPHqh3bwZGgC9QOxNPEamx7zgYz+895JNvDY1ULwau9k7HqkDuzetmDw6Ddq8kohBPWafkbtvz9s6AuGXvP9c/ztZN+I83A0bPA1M0rutunY8K/Y5vVIdQDywNiw8Z7t4vCoklDzp5Nw8nvBkPKuhKD00oRw9SnJUuyps5zzqmy+9TDqgPC9+Gb3dCK68j2hYu+PtxzzN5fq8Vqbvu8vQtLy0Lso8+GP2OlKnOTwzJqS86M6fO0WnerxlFta8toGCvEtJ6ruotm+8ffW8vEfdojwMYvc7sqsTuzzD6Tw20IG6iKzXPEvGMjuAVRa9Rt8ivBsryTwK0Q+8F18cvEJYBby/Au68N1+PPDDlKz0gzYQ8VBjvPKBJZLt1Vcw8NvklvIRPFj1uaKA8kQhEvE6UL7tKb2K8izpEO2XXjjwvdrM7KHGXPJtYfzxNrro8+dd3PIh2DbyPtIO783EPPVb8yTs4LTA8y5kfPA44bDzQkRO8T3k3vWJocrysmek8+kLVPCo4xLu+1dS7zbMvu6FmvTwAJWG8cR6ROyK0nrtm86q8X4neO5o+SruvPgI9GuivvEBHjryABws89EOiO57EsjwfssO89in5O99d4Tv5DRG7xOBXvPlzqjzJl1A8vN4ZPEPSAL1jp/e7ijc+PKSx8Dzj8Iy7e3LpvM2Qh7ze8Os7c6jgu3rSijzTuCK9my4EPRDoQDri3QI5UcolPJrxsTufo2m8QzixvCSPCbzM8yE8iLI6PLBTpTsi2v+8YySnvC5epDyaukq9XZUWPAEu1btV9Kc65Fq2vGCka7xIaBO83Q4PPG0BxrofYKU8y+YIvPdHnjuQXQw9nrcCPTQFy7yCDQo8cgDHvIctYDyiMnM8de+MvFUbezyvhta7K7rdOwK4IzxiZgs7eTw8vAn5xjusdAa81relPG/8sTxdbBG9cFsbvZMTcr36cJs8aaC7OunUXjxeUeg89rzBu2gByTwZ8gO6ZZJWPEDxuzwqDDQ6r/bBPNv7Z7yWkjm8jEQkvXV4BrsQA5e8IaeXu7DcwDxoKB48r5QHO4TT6jxctUI720AvvGOT+Dyzk7e8KHUBvNwIqrsO/Ia8ml/ou0GHZjs9Mzw80KAZPG+UpLqYD7+8E+aKvKlukzx12807KobIvABiIz0FjgI9DplBPJ0Ckjz5qCA75vsvvIHzWbwKDA+5Ea5wPHUYPryomTw8i3NOvHDx0brIbFY8lzzkvPd2J71oLti8ZJazOeMYxbrH8WC6xnvuu90bCTxNe9w8PDWqvHavLbxZ1C66bUuLvOfKzDw5KNi872SXPIedpzwXLeC7hwz/ud/nVTrdxsW8CcyNPPWj5jylh5u7eGn6upQWLryOjBE9muEIPUv1bLv2HPm8WLebPCmWDjzrjzK8kHNaO1XSjrxcJOi8w3AoPafVILyXaq08K0wTuzVYybxPvnc8cfF3vMWotTzCmRa81Tngu0IzDDuI1ai73RxRvLi5eTxx1ok8C2kAu3tT6buUCq66JDn1vDZSsjxRHXY81etKvOaQhTy2kf+8VRADu1YlIzzDm3a8xWkCvQQa8LwY0048r/xfvJ796rw0m8M78FxiPPlEnTwM1To8jTwNvJqnxTyavTg8ZKtTu31JGr2IsEy79VNlvHqVsjvR3Nu8YGaou/xafjvVS4M81XwtvERsrrzZeTO8rd69vLcACDxzKkY8hvONO6qsjbxK5qy8T3OKvIPvsDwGr168gTXCO4UIR7xrdRg8hlsouoS+Cb3rliw8KdgcPNa6K7tgbo08DDtmvMaWiDkUFi48xrfpu6ZvDTxzmaq8YE+cu3a8rLnj9uo8R0LAOzWp07vML9o8/DIIvGvPDL2iIoY8s2yxPNC60bsnkOy8X/sUPbA5njtKbfS7sg6xPO0GVrxvCM68OT/RPJ7dFz0PiIa8Im0EPWu0sDs8YAo8bXZFPPFt6ryygQu8p5xZPO/sqTxYQS+7eOgJO9nvwLwk3RK83EwDvaC4czwX/lK8m0rUu7cOD7yKmaU72l6KPB1Lpzyn++48tHpRvNqJKj2eCRI9EOlKvCrMJj0D4368nE2HO/kN9bvjJQE9RS7xvJF/q7yaZGE9KuZCPHqM7DsEZoM83OuAPFxRWjs0+Bs8i8oUPQlZpTw/CZM76anFu6p68Dx7rRE8VlnWOjFn1DqP1xO9H1o5vDA7+rz9/ZI8fZY/O3n0gLs9TDs8GjYnvAZDDz3g2RI7Gc+SvLc4nbzjpOU4pHwFPMg3MzybpME8fGR/O5qlZDxU9Wc8anWGPBzK0DzxNmc8jk1fPIXPHb1coMm8SOxpvKTk7bxYQxu9VYaEPPKFHbwHBlW86I4WvDFHHb3SzQq9NOuBPL6mOro16BY8qSWWvBHvn7wjIim9WoyAu/ZbNjuUVPu8S7AkPMXLVTwOCvS6fvd4PFjvm7ytnAq841PwOo0yzTzEQwy74/kjPLaQ1jvVnOi7ek/fvDKVjrzdKv08W4UUvETijTvFPKg66EDiPDj/+zxqtVK8SC6IPFhtO70+Qnq86jzEu4fXMLp9Fji7qLwxPIXSXb1KX6y88ptYvLutxbvtqbO7hr5rvIWtkDvSF0k8KhnJvIC6gztN9ae7IYeGPMsNRrzpRCK8R0iovAGzFDz+wHs8POqmOgZ7gLxcHr67O1Gmu4OgqrxPRBy8oHa/PGOxWDy7PYO8NTrHvN/IMLyRHgK8UeMaPGyPxLy+5h67tBZJPfV4bzy17+s7FwYFPZ9RrbwcVgq8KX+fPEYhsbzgZ5k8qxbRvAPn0DwIFvm8YDFxPK/XozwgqyC9qa/Ou2eNSjvO7i+8WwHzPLGWsLxuBA+9j1xVPNedS7veW288YQeRu7t1LryOy5w8KC5gvQyvhjrAtpS8b+jLvALWUDswKIe8BdjFvCkNuTptFMe8IkrivGps6DyQpKE8t5gUPERKozu4M9S86EWMPB6Lo7wase08IJ75O1ESSbzJkeQ6frlOPNqDzLqhrQI9nP4VPbhN5TtdD5S5p5KwPGRKTDtNpwa8eEYrPFxRATxx5um7Mvp9u7xTxTyIxWU8M2aSO7f+azyWJR+8Yys8umbmyrw8sGy8NnyXvPwp/7udQx681D3yPOPs3rsIBRi9mYvUvOq3D71hmsc7bfpzvOJR7Ly27A48MoiNPDO4hbwk1sU8yMePuyqmrTznwL07qaqSvM+7CbvkMCS9gJWcvLxfCrzdCj+8l9g2PFHk9TvAhUq7bIV4Oymf37rx/zu65eXDPICuhTzPyVc75k16uqwxqTsYz5e7EnYGPVpBiDz5M/g8ZRUCPXvilrzkSRO70+DHOypkdztXqyu6P0CNPPY4Ujz76je5qMIQvWxroTuSwKC5ExC3vL+ODLzCVuc6MboaPbPHCr2p77k7NsNVOflKhbyM3QK9R+IMPIG+ZDzANka6g1gnvUzKHLwaPzq9AfEEPJdUHjxMmfE7LZJSvNOkj7xlbB89B00iPRUUiLuI+qs65x0CPdq9iDtkzBo9t3a/PGGdpbvp3W+70+ANvKrbwjv9re06bxp2vE2hTjy2+DW9DPgPvPoi9ryXLBK83TghvJ1dhTtzmmG8TeBqOyaPALytGK29liBjvFB24jurSny7bX3Muypg/bz1F3M8yiPFvKXi2DzJb2e8SDi8vJuz8DtA4we8ia3sO3AEj7uKA9c8di+JvGhJ4rm6pF27UewzPUeyGryw4bK8WI3jvMHWkzzpHYO8OTUIPQnQkbwJW5U83BWmPDrplDsG/Y48tSk8vNCZs7t8fXy8RDocPJlfRryUPxK9UJk5vBtF17sUHIM8pVqpPEHtWTxH6sA74AzmvBEIRzshxyS6tbwFPAPRujxoQro8IOH5vFkqIjyQ04+8cJEmvNY37zoS2ci8EKTLPI1q3TtI5o68uDytuzV2N7x1FHW9fsLpu9jcDTz7Gxq7TjqQvEYO27wYhKe8/8SXu0A2+Tpq/Tu8PPGTvERuq7yxo+Y6LdGtukHo7rxvkgo9kNarvKH1sbxGlQq81TC+u2rQcrwJUqs8Gj9tPNO6brwzOC28v23wu8OidTwQ6h+88/8TvVT0vzx0CMK7sha7PAwuijxSTXW7sWKPOTk3Cz0MuEm8YJojPIAdsLnx0Gw80/hWu26C5LxioUK8RjZEuc1HG7wCATg8/OIRPB6agL2hY2I8eDxcPaF8cDzbfAA89g+QvNNaBbzs8LY7RjtyPADjgLtMvZC7X6rku1OgiLoAa8a8BNmoOjQx1Ty+7w87dXgavBWJ1TrggqS7/i7au1I1DzxWk/w8ntSgPFzq/7tsfXg8D6DevLUBlryLPSi8aoVXvCBcgjv2rAo4e4E/PC9d0zzouJm8/yzcvHsIAz2x6rU6/Bs3vYfexDw6WDC81lUePIXDQrxKXGe8LqezvF2bNLm/uGA8Q1O/vC+fXTrMcnk8ZGz2uwMz17w4miq7LUL/u30f57rKWYe8Lhu+vANV1zzOI7W8/ecHO+VSF70Jivg78EmEu6Ro0buulyA8+2YtPXwdGz1xfRg8ts3MvBZ74rrsZIE87+ZCveAjEjt3NiO9ViNLPCvbrLyVb3k88p20PMgYz7tR1UM8FRFIPU17jjwYq6A8YBVJu5SEkbscbxK8AhjEPAWg07zlL466ozwBPSHVgrykNdU763hrvLz7hLq8Ci+774qHPFm5kjw+GFO8dHdKvdmq+jv7tpA7LOu0PJXLWbwyBoI7Ma2yu1ZzED1V/ok87UcYOTZVrbqfPSE9ToaUPK+jD71rGHE7BycsPOtOnru1LxS9kNlqPPXADDtmdl87/gPnu49WA7yCyya9fpf0u5to+TqbJIg8K/H2usonlbyhtQC8uq/9PO/SwTtACpe8oVaWut/HMr3IUnY8VpPTPOTEybzSu9K7GfG3vAuD9zw0PUY7ajfpPPn9Bry1YKs7ff1VPHDSZjx/6fG7LeqgvAHgnjvoaJg66Sc6PZB8ozyPoIq72/YgvNkFrLxttiy8q65VvB31iDxcPp08QnOZu28A5zwOk0e82tsdPL2jmbtdmbW8/uKJvORr27sNm/U6UwO9O771i7zVQ6Y8Zh9Eu3x7vrxS2US883gjPX5btbxxZPW8VW4tPAnyr7qLZDw9S8V5PKUqDrpje/E7rempPPDVWrwU4YS81QmHPDrFtLzjpSs8/KKXvC1ZybyIdKi81QcavH/IKTwShGa8blacuw0Mi7ockiK9zaBrPBuqnzrkRAQ7ZkJKvJXJEj1w3PO7ftJfu1yReDxGsag7fL5evE7MWTz5loY7XvHdPPopb7sPiD+7elcHPftoMLzOE8A8W5Q2PAazrzr21I86lX8fPKh3Abt+pE88rX7gPLVZLrrFkuo7c4MIO8wa77yNxIS8IUFGPEQtALyce348hiz3vLBJsrzwE/y8BF/ovGTxtrovMko8R7bXvJfxmrvoPc88pRzYus1pUruPd2i8G6GHu6iaQ7sJ5xA94XpuOw==
index: 0
object: embedding
model: qwen3-embedding:4b
object: list
usage:
prompt_tokens: 9
total_tokens: 9
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '4167'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
messages:
- content: |-
You are a helpful research assistant powered by haiku.rag, a knowledge base system.
CRITICAL RULES:
1. For greetings or casual chat: respond directly WITHOUT using any tools
2. NEVER make up information - always use capabilities to get facts from the knowledge base
3. When a capability returns citations, always include them in your response
# RAG
You are a RAG assistant with access to a document knowledge base.
Use your tools to search and answer questions. Never make up information — always use tools to get facts from the knowledge base.
## Tools
### rag_search
Search the knowledge base using hybrid search (vector + full-text). Returns ranked results with context-expanded content.
Each result includes:
- `chunk_id` in brackets and rank position (rank 1 = most relevant)
- Source: document title and section hierarchy
- Type: content type (paragraph, table, code, list_item, picture)
- Content: the actual text
When a result's Type is `picture`, the corresponding figure may also be attached to the tool response as an image alongside the text. Use the image directly to answer questions about figures, diagrams, charts, screenshots.
### rag_cite
Register the chunk IDs that ground your answer. Call this BEFORE writing your final answer, with the `chunk_id` values from search results that support each claim. Every answer that uses search results must be backed by `rag_cite`.
Use chunk_ids exactly as they appear in the search response — copy the full UUID verbatim. Do not abbreviate, paraphrase, or reconstruct chunk_ids from memory; the tool matches them as opaque strings.
## How to answer questions
1. Call `rag_search` with relevant keywords from the question
2. Review the results — they are ordered by relevance (rank 1 = best match)
3. If needed, search again with different keywords (you have a limited number of searches)
4. Identify the chunk IDs that support your answer and call `rag_cite` with them
5. Then write a concise answer based strictly on the cited content
You MUST call `rag_cite` with at least one chunk ID before producing your final answer, **unless** you are refusing for lack of information (see below). Answers without citations are considered ungrounded.
## Guidelines
- Base answers strictly on retrieved content — do not use external knowledge
- Use the Source and Type metadata to understand context
- If multiple results are relevant, synthesize them coherently
- Be concise and direct — avoid elaboration unless asked
- If the search tool tells you the search limit is reached, stop searching and answer with what you have
- If the retrieved documents do not directly address the question, say: "I cannot find enough information in the knowledge base to answer this question." Do not guess or infer from tangentially related content. In this refusal case do **not** call `rag_cite` — there is nothing to cite.
- Do NOT include chunk IDs or UUIDs in your answer text — your answer should read naturally. Use the `rag_cite` tool separately to register citations.
## When search returns irrelevant results
If your first search returns results that clearly don't match the question:
- Try one more search with different keywords
- If still irrelevant, report that the knowledge base doesn't contain relevant information
role: system
- content: What is Python?
role: user
model: gpt-oss
reasoning_effort: high
stream: false
temperature: 0.3
tool_choice: auto
tools:
- function:
description: Search the knowledge base using hybrid vector and full-text search.
name: rag_search
parameters:
additionalProperties: false
properties:
limit:
anyOf:
- type: integer
- type: 'null'
default: null
query:
type: string
required:
- query
type: object
type: function
- function:
description: Register exact search-result chunk IDs as citations for the answer.
name: rag_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:
- '627'
content-type:
- application/json
parsed_body:
choices:
- finish_reason: tool_calls
index: 0
message:
content: ''
reasoning: 'The user asks: "What is Python?" They want a definition. We should use rag_search to find content about
Python. Then cite. Let''s do a search.'
role: assistant
tool_calls:
- function:
arguments: '{"limit":5,"query":"Python programming language definition"}'
name: rag_search
id: call_01ojo50i
index: 0
type: function
created: 1784300361
id: chatcmpl-84
model: gpt-oss
object: chat.completion
system_fingerprint: fp_ollama
usage:
completion_tokens: 65
prompt_tokens: 853
total_tokens: 918
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '108'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
encoding_format: base64
input:
- Python programming language definition
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: 5
total_tokens: 5
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '4711'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
messages:
- content: |-
You are a helpful research assistant powered by haiku.rag, a knowledge base system.
CRITICAL RULES:
1. For greetings or casual chat: respond directly WITHOUT using any tools
2. NEVER make up information - always use capabilities to get facts from the knowledge base
3. When a capability returns citations, always include them in your response
# RAG
You are a RAG assistant with access to a document knowledge base.
Use your tools to search and answer questions. Never make up information — always use tools to get facts from the knowledge base.
## Tools
### rag_search
Search the knowledge base using hybrid search (vector + full-text). Returns ranked results with context-expanded content.
Each result includes:
- `chunk_id` in brackets and rank position (rank 1 = most relevant)
- Source: document title and section hierarchy
- Type: content type (paragraph, table, code, list_item, picture)
- Content: the actual text
When a result's Type is `picture`, the corresponding figure may also be attached to the tool response as an image alongside the text. Use the image directly to answer questions about figures, diagrams, charts, screenshots.
### rag_cite
Register the chunk IDs that ground your answer. Call this BEFORE writing your final answer, with the `chunk_id` values from search results that support each claim. Every answer that uses search results must be backed by `rag_cite`.
Use chunk_ids exactly as they appear in the search response — copy the full UUID verbatim. Do not abbreviate, paraphrase, or reconstruct chunk_ids from memory; the tool matches them as opaque strings.
## How to answer questions
1. Call `rag_search` with relevant keywords from the question
2. Review the results — they are ordered by relevance (rank 1 = best match)
3. If needed, search again with different keywords (you have a limited number of searches)
4. Identify the chunk IDs that support your answer and call `rag_cite` with them
5. Then write a concise answer based strictly on the cited content
You MUST call `rag_cite` with at least one chunk ID before producing your final answer, **unless** you are refusing for lack of information (see below). Answers without citations are considered ungrounded.
## Guidelines
- Base answers strictly on retrieved content — do not use external knowledge
- Use the Source and Type metadata to understand context
- If multiple results are relevant, synthesize them coherently
- Be concise and direct — avoid elaboration unless asked
- If the search tool tells you the search limit is reached, stop searching and answer with what you have
- If the retrieved documents do not directly address the question, say: "I cannot find enough information in the knowledge base to answer this question." Do not guess or infer from tangentially related content. In this refusal case do **not** call `rag_cite` — there is nothing to cite.
- Do NOT include chunk IDs or UUIDs in your answer text — your answer should read naturally. Use the `rag_cite` tool separately to register citations.
## When search returns irrelevant results
If your first search returns results that clearly don't match the question:
- Try one more search with different keywords
- If still irrelevant, report that the knowledge base doesn't contain relevant information
role: system
- content: What is Python?
role: user
- content: null
reasoning: 'The user asks: "What is Python?" They want a definition. We should use rag_search to find content about
Python. Then cite. Let''s do a search.'
role: assistant
tool_calls:
- function:
arguments: '{"limit":5,"query":"Python programming language definition"}'
name: rag_search
id: call_01ojo50i
type: function
- content: |-
[4731e598-9cb5-490d-ba06-1898dcad1a28] [rank 1 of 1]
Type: text
Content:
Python is a high-level programming language.
role: tool
tool_call_id: call_01ojo50i
model: gpt-oss
reasoning_effort: high
stream: false
temperature: 0.3
tool_choice: auto
tools:
- function:
description: Search the knowledge base using hybrid vector and full-text search.
name: rag_search
parameters:
additionalProperties: false
properties:
limit:
anyOf:
- type: integer
- type: 'null'
default: null
query:
type: string
required:
- query
type: object
type: function
- function:
description: Register exact search-result chunk IDs as citations for the answer.
name: rag_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:
- '689'
content-type:
- application/json
parsed_body:
choices:
- finish_reason: tool_calls
index: 0
message:
content: ''
reasoning: 'We have one result: chunk_id 4731e598-9cb5-490d-ba06-1898dcad1a28, content: "Python is a high-level
programming language." That seems to answer the question. We need to cite it. Use rag_cite with that chunk ID.'
role: assistant
tool_calls:
- function:
arguments: '{"chunk_ids":["4731e598-9cb5-490d-ba06-1898dcad1a28"]}'
name: rag_cite
id: call_79yns9oq
index: 0
type: function
created: 1784300365
id: chatcmpl-435
model: gpt-oss
object: chat.completion
system_fingerprint: fp_ollama
usage:
completion_tokens: 111
prompt_tokens: 975
total_tokens: 1086
status:
code: 200
message: OK
- request:
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate, zstd
connection:
- keep-alive
content-length:
- '5219'
content-type:
- application/json
host:
- localhost:11434
method: POST
parsed_body:
messages:
- content: |-
You are a helpful research assistant powered by haiku.rag, a knowledge base system.
CRITICAL RULES:
1. For greetings or casual chat: respond directly WITHOUT using any tools
2. NEVER make up information - always use capabilities to get facts from the knowledge base
3. When a capability returns citations, always include them in your response
# RAG
You are a RAG assistant with access to a document knowledge base.
Use your tools to search and answer questions. Never make up information — always use tools to get facts from the knowledge base.
## Tools
### rag_search
Search the knowledge base using hybrid search (vector + full-text). Returns ranked results with context-expanded content.
Each result includes:
- `chunk_id` in brackets and rank position (rank 1 = most relevant)
- Source: document title and section hierarchy
- Type: content type (paragraph, table, code, list_item, picture)
- Content: the actual text
When a result's Type is `picture`, the corresponding figure may also be attached to the tool response as an image alongside the text. Use the image directly to answer questions about figures, diagrams, charts, screenshots.
### rag_cite
Register the chunk IDs that ground your answer. Call this BEFORE writing your final answer, with the `chunk_id` values from search results that support each claim. Every answer that uses search results must be backed by `rag_cite`.
Use chunk_ids exactly as they appear in the search response — copy the full UUID verbatim. Do not abbreviate, paraphrase, or reconstruct chunk_ids from memory; the tool matches them as opaque strings.
## How to answer questions
1. Call `rag_search` with relevant keywords from the question
2. Review the results — they are ordered by relevance (rank 1 = best match)
3. If needed, search again with different keywords (you have a limited number of searches)
4. Identify the chunk IDs that support your answer and call `rag_cite` with them
5. Then write a concise answer based strictly on the cited content
You MUST call `rag_cite` with at least one chunk ID before producing your final answer, **unless** you are refusing for lack of information (see below). Answers without citations are considered ungrounded.
## Guidelines
- Base answers strictly on retrieved content — do not use external knowledge
- Use the Source and Type metadata to understand context
- If multiple results are relevant, synthesize them coherently
- Be concise and direct — avoid elaboration unless asked
- If the search tool tells you the search limit is reached, stop searching and answer with what you have
- If the retrieved documents do not directly address the question, say: "I cannot find enough information in the knowledge base to answer this question." Do not guess or infer from tangentially related content. In this refusal case do **not** call `rag_cite` — there is nothing to cite.
- Do NOT include chunk IDs or UUIDs in your answer text — your answer should read naturally. Use the `rag_cite` tool separately to register citations.
## When search returns irrelevant results
If your first search returns results that clearly don't match the question:
- Try one more search with different keywords
- If still irrelevant, report that the knowledge base doesn't contain relevant information
role: system
- content: What is Python?
role: user
- content: null
reasoning: 'The user asks: "What is Python?" They want a definition. We should use rag_search to find content about
Python. Then cite. Let''s do a search.'
role: assistant
tool_calls:
- function:
arguments: '{"limit":5,"query":"Python programming language definition"}'
name: rag_search
id: call_01ojo50i
type: function
- content: |-
[4731e598-9cb5-490d-ba06-1898dcad1a28] [rank 1 of 1]
Type: text
Content:
Python is a high-level programming language.
role: tool
tool_call_id: call_01ojo50i
- content: null
reasoning: 'We have one result: chunk_id 4731e598-9cb5-490d-ba06-1898dcad1a28, content: "Python is a high-level programming
language." That seems to answer the question. We need to cite it. Use rag_cite with that chunk ID.'
role: assistant
tool_calls:
- function:
arguments: '{"chunk_ids":["4731e598-9cb5-490d-ba06-1898dcad1a28"]}'
name: rag_cite
id: call_79yns9oq
type: function
- content: Registered 1 citation(s).
role: tool
tool_call_id: call_79yns9oq
model: gpt-oss
reasoning_effort: high
stream: false
temperature: 0.3
tool_choice: auto
tools:
- function:
description: Search the knowledge base using hybrid vector and full-text search.
name: rag_search
parameters:
additionalProperties: false
properties:
limit:
anyOf:
- type: integer
- type: 'null'
default: null
query:
type: string
required:
- query
type: object
type: function
- function:
description: Register exact search-result chunk IDs as citations for the answer.
name: rag_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:
- '332'
content-type:
- application/json
parsed_body:
choices:
- finish_reason: stop
index: 0
message:
content: Python is a highlevel programming language.
role: assistant
created: 1784300366
id: chatcmpl-961
model: gpt-oss
object: chat.completion
system_fingerprint: fp_ollama
usage:
completion_tokens: 13
prompt_tokens: 1105
total_tokens: 1118
status:
code: 200
message: OK
version: 1