Deployed 0585a4e with MkDocs version: 1.3.0

This commit is contained in:
2022-07-12 19:53:07 +00:00
parent 7305d2ead3
commit 8cda980b81
33 changed files with 782 additions and 464 deletions

View file

@ -408,7 +408,7 @@
<li class="md-nav__item">
<a href="../how-to-guides/use-service/" class="md-nav__link">
How to use a GreatAI service
How to deploy a GreatAI service
</a>
</li>
@ -422,7 +422,7 @@
<li class="md-nav__item">
<a href="../how-to-guides/handle-training-data/" class="md-nav__link">
How to handle training data
How to manage training data
</a>
</li>
@ -436,7 +436,7 @@
<li class="md-nav__item">
<a href="../how-to-guides/large_file/" class="md-nav__link">
How to use LargeFile
How to use LargeFile-s
</a>
</li>
@ -449,8 +449,8 @@
<li class="md-nav__item">
<a href="../how-to-guides/call_remote.md" class="md-nav__link">
None
<a href="../how-to-guides/call-remote/" class="md-nav__link">
Call remote GreatAI instances
</a>
</li>
@ -3126,6 +3126,10 @@ Returns:
<div class="doc doc-contents first">
<p>Communicate with a GreatAI object through an HTTP request.</p>
<p>Wrapper over <code>call_remote_great_ai_async</code> making it synchronous. For more info, see
<code>call_remote_great_ai_async</code>.</p>
<details class="quote">
<summary>Source code in <code>great_ai/remote/call_remote_great_ai.py</code></summary>
@ -3152,30 +3156,40 @@ Returns:
<span class="normal"><a href="#__codelineno-0-36">36</a></span>
<span class="normal"><a href="#__codelineno-0-37">37</a></span>
<span class="normal"><a href="#__codelineno-0-38">38</a></span>
<span class="normal"><a href="#__codelineno-0-39">39</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">call_remote_great_ai</span><span class="p">(</span>
<span class="normal"><a href="#__codelineno-0-39">39</a></span>
<span class="normal"><a href="#__codelineno-0-40">40</a></span>
<span class="normal"><a href="#__codelineno-0-41">41</a></span>
<span class="normal"><a href="#__codelineno-0-42">42</a></span>
<span class="normal"><a href="#__codelineno-0-43">43</a></span>
<span class="normal"><a href="#__codelineno-0-44">44</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">call_remote_great_ai</span><span class="p">(</span>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a> <span class="n">base_uri</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-18" name="__codelineno-0-18"></a> <span class="n">data</span><span class="p">:</span> <span class="n">Mapping</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="n">retry_count</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">timeout_in_seconds</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="mi">300</span><span class="p">,</span>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">model_class</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Type</span><span class="p">[</span><span class="n">T</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Trace</span><span class="p">[</span><span class="n">T</span><span class="p">]:</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">asyncio</span><span class="o">.</span><span class="n">get_running_loop</span><span class="p">()</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="sa">f</span><span class="s2">&quot;Already running in an event loop, you have to call `</span><span class="si">{</span><span class="n">call_remote_great_ai_async</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">`&quot;</span>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a> <span class="p">)</span>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">except</span> <span class="ne">RuntimeError</span><span class="p">:</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="k">pass</span>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a>
<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="n">future</span> <span class="o">=</span> <span class="n">call_remote_great_ai_async</span><span class="p">(</span>
<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">base_uri</span><span class="o">=</span><span class="n">base_uri</span><span class="p">,</span>
<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="n">retry_count</span><span class="o">=</span><span class="n">retry_count</span><span class="p">,</span>
<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="n">timeout_in_seconds</span><span class="o">=</span><span class="n">timeout_in_seconds</span><span class="p">,</span>
<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">model_class</span><span class="o">=</span><span class="n">model_class</span><span class="p">,</span>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="p">)</span>
<a id="__codelineno-0-38" name="__codelineno-0-38"></a>
<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="k">return</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">future</span><span class="p">)</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="sd">&quot;&quot;&quot;Communicate with a GreatAI object through an HTTP request.</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> Wrapper over `call_remote_great_ai_async` making it synchronous. For more info, see</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="sd"> `call_remote_great_ai_async`.</span>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="n">asyncio</span><span class="o">.</span><span class="n">get_running_loop</span><span class="p">()</span>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span>
<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="sa">f</span><span class="s2">&quot;Already running in an event loop, you have to call `</span><span class="si">{</span><span class="n">call_remote_great_ai_async</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">`&quot;</span>
<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="p">)</span>
<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">except</span> <span class="ne">RuntimeError</span><span class="p">:</span>
<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">pass</span>
<a id="__codelineno-0-35" name="__codelineno-0-35"></a>
<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">future</span> <span class="o">=</span> <span class="n">call_remote_great_ai_async</span><span class="p">(</span>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">base_uri</span><span class="o">=</span><span class="n">base_uri</span><span class="p">,</span>
<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
<a id="__codelineno-0-39" name="__codelineno-0-39"></a> <span class="n">retry_count</span><span class="o">=</span><span class="n">retry_count</span><span class="p">,</span>
<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="n">timeout_in_seconds</span><span class="o">=</span><span class="n">timeout_in_seconds</span><span class="p">,</span>
<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="n">model_class</span><span class="o">=</span><span class="n">model_class</span><span class="p">,</span>
<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="p">)</span>
<a id="__codelineno-0-43" name="__codelineno-0-43"></a>
<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="k">return</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">future</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@ -3197,6 +3211,78 @@ Returns:
<div class="doc doc-contents first">
<p>Communicate with a GreatAI object through an HTTP request.</p>
<p>Send a POST request using <a href="https://www.python-httpx.org/">httpx</a> to implement a
remote call. Error-handling and retries are provided by httpx.</p>
<p>The return value is inflated into a Trace. If <code>model_class</code> is specified, the
original output is deserialised.</p>
<p><strong>Parameters:</strong></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>base_uri</code></td>
<td>
<code>str</code>
</td>
<td><p>Address of the remote instance, example: 'http://localhost:6060'</p></td>
<td>
<em>required</em>
</td>
</tr>
<tr>
<td><code>data</code></td>
<td>
<code><span title="typing.Mapping">Mapping</span>[str, <span title="typing.Any">Any</span>]</code>
</td>
<td><p>The input sent as a json to the remote instance.</p></td>
<td>
<em>required</em>
</td>
</tr>
<tr>
<td><code>retry_count</code></td>
<td>
<code>int</code>
</td>
<td><p>Retry on any HTTP communication failure.</p></td>
<td>
<code>4</code>
</td>
</tr>
<tr>
<td><code>timeout_in_seconds</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[int]</code>
</td>
<td><p>Overall permissable max length of the request. <code>None</code> means
no timeout.</p></td>
<td>
<code>300</code>
</td>
</tr>
<tr>
<td><code>model_class</code></td>
<td>
<code><span title="typing.Optional">Optional</span>[<span title="typing.Type">Type</span>[<span title="great_ai.remote.call_remote_great_ai_async.T">T</span>]]</code>
</td>
<td><p>A subtype of BaseModel to be used for deserialising the <code>.output</code>
of the trace.</p></td>
<td>
<code>None</code>
</td>
</tr>
</tbody>
</table>
<details class="quote">
<summary>Source code in <code>great_ai/remote/call_remote_great_ai_async.py</code></summary>
@ -3239,46 +3325,80 @@ Returns:
<span class="normal"><a href="#__codelineno-0-48">48</a></span>
<span class="normal"><a href="#__codelineno-0-49">49</a></span>
<span class="normal"><a href="#__codelineno-0-50">50</a></span>
<span class="normal"><a href="#__codelineno-0-51">51</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">async</span> <span class="k">def</span> <span class="nf">call_remote_great_ai_async</span><span class="p">(</span>
<span class="normal"><a href="#__codelineno-0-51">51</a></span>
<span class="normal"><a href="#__codelineno-0-52">52</a></span>
<span class="normal"><a href="#__codelineno-0-53">53</a></span>
<span class="normal"><a href="#__codelineno-0-54">54</a></span>
<span class="normal"><a href="#__codelineno-0-55">55</a></span>
<span class="normal"><a href="#__codelineno-0-56">56</a></span>
<span class="normal"><a href="#__codelineno-0-57">57</a></span>
<span class="normal"><a href="#__codelineno-0-58">58</a></span>
<span class="normal"><a href="#__codelineno-0-59">59</a></span>
<span class="normal"><a href="#__codelineno-0-60">60</a></span>
<span class="normal"><a href="#__codelineno-0-61">61</a></span>
<span class="normal"><a href="#__codelineno-0-62">62</a></span>
<span class="normal"><a href="#__codelineno-0-63">63</a></span>
<span class="normal"><a href="#__codelineno-0-64">64</a></span>
<span class="normal"><a href="#__codelineno-0-65">65</a></span>
<span class="normal"><a href="#__codelineno-0-66">66</a></span>
<span class="normal"><a href="#__codelineno-0-67">67</a></span>
<span class="normal"><a href="#__codelineno-0-68">68</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-12" name="__codelineno-0-12"></a><span class="k">async</span> <span class="k">def</span> <span class="nf">call_remote_great_ai_async</span><span class="p">(</span>
<a id="__codelineno-0-13" name="__codelineno-0-13"></a> <span class="n">base_uri</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-14" name="__codelineno-0-14"></a> <span class="n">data</span><span class="p">:</span> <span class="n">Mapping</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
<a id="__codelineno-0-15" name="__codelineno-0-15"></a> <span class="n">retry_count</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span>
<a id="__codelineno-0-16" name="__codelineno-0-16"></a> <span class="n">timeout_in_seconds</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="mi">300</span><span class="p">,</span>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a> <span class="n">model_class</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Type</span><span class="p">[</span><span class="n">T</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Trace</span><span class="p">[</span><span class="n">T</span><span class="p">]:</span>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="k">if</span> <span class="n">base_uri</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">):</span>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">base_uri</span> <span class="o">=</span> <span class="n">base_uri</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">base_uri</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;/predict&quot;</span><span class="p">):</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">base_uri</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">base_uri</span><span class="si">}</span><span class="s2">/predict&quot;</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="n">transport</span> <span class="o">=</span> <span class="n">httpx</span><span class="o">.</span><span class="n">AsyncHTTPTransport</span><span class="p">(</span><span class="n">retries</span><span class="o">=</span><span class="n">retry_count</span><span class="p">)</span>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="k">async</span> <span class="k">with</span> <span class="n">httpx</span><span class="o">.</span><span class="n">AsyncClient</span><span class="p">(</span>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">transport</span><span class="o">=</span><span class="n">transport</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout_in_seconds</span>
<a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
<a id="__codelineno-0-32" name="__codelineno-0-32"></a> <span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">base_uri</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
<a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
<a id="__codelineno-0-35" name="__codelineno-0-35"></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span><span class="p">(</span><span class="s2">&quot;Unexpected status code&quot;</span><span class="p">)</span>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span> <span class="kn">from</span> <span class="nn">e</span>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a> <span class="sd">&quot;&quot;&quot;Communicate with a GreatAI object through an HTTP request.</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="sd"> Send a POST request using [httpx](https://www.python-httpx.org/) to implement a</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="sd"> remote call. Error-handling and retries are provided by httpx.</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> The return value is inflated into a Trace. If `model_class` is specified, the</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="sd"> original output is deserialised.</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> base_uri: Address of the remote instance, example: &#39;http://localhost:6060&#39;</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="sd"> data: The input sent as a json to the remote instance.</span>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> retry_count: Retry on any HTTP communication failure.</span>
<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> timeout_in_seconds: Overall permissable max length of the request. `None` means</span>
<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> no timeout.</span>
<a id="__codelineno-0-33" name="__codelineno-0-33"></a><span class="sd"> model_class: A subtype of BaseModel to be used for deserialising the `.output`</span>
<a id="__codelineno-0-34" name="__codelineno-0-34"></a><span class="sd"> of the trace.</span>
<a id="__codelineno-0-35" name="__codelineno-0-35"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-36" name="__codelineno-0-36"></a>
<a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="k">if</span> <span class="n">base_uri</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">):</span>
<a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="n">base_uri</span> <span class="o">=</span> <span class="n">base_uri</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<a id="__codelineno-0-39" name="__codelineno-0-39"></a>
<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="n">trace</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
<a id="__codelineno-0-42" name="__codelineno-0-42"></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span><span class="p">(</span>
<a id="__codelineno-0-44" name="__codelineno-0-44"></a> <span class="sa">f</span><span class="s2">&quot;JSON parsing failed </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="p">)</span>
<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="k">if</span> <span class="n">model_class</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="n">trace</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">model_class</span><span class="o">.</span><span class="n">parse_obj</span><span class="p">(</span><span class="n">trace</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">])</span>
<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="n">Trace</span><span class="o">.</span><span class="n">parse_obj</span><span class="p">(</span><span class="n">trace</span><span class="p">)</span>
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span><span class="p">(</span><span class="s2">&quot;Could not parse Trace&quot;</span><span class="p">)</span>
<a id="__codelineno-0-40" name="__codelineno-0-40"></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">base_uri</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;/predict&quot;</span><span class="p">):</span>
<a id="__codelineno-0-41" name="__codelineno-0-41"></a> <span class="n">base_uri</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">base_uri</span><span class="si">}</span><span class="s2">/predict&quot;</span>
<a id="__codelineno-0-42" name="__codelineno-0-42"></a>
<a id="__codelineno-0-43" name="__codelineno-0-43"></a> <span class="n">transport</span> <span class="o">=</span> <span class="n">httpx</span><span class="o">.</span><span class="n">AsyncHTTPTransport</span><span class="p">(</span><span class="n">retries</span><span class="o">=</span><span class="n">retry_count</span><span class="p">)</span>
<a id="__codelineno-0-44" name="__codelineno-0-44"></a>
<a id="__codelineno-0-45" name="__codelineno-0-45"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-46" name="__codelineno-0-46"></a> <span class="k">async</span> <span class="k">with</span> <span class="n">httpx</span><span class="o">.</span><span class="n">AsyncClient</span><span class="p">(</span>
<a id="__codelineno-0-47" name="__codelineno-0-47"></a> <span class="n">transport</span><span class="o">=</span><span class="n">transport</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout_in_seconds</span>
<a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
<a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">base_uri</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
<a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span>
<a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<a id="__codelineno-0-53" name="__codelineno-0-53"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span><span class="p">(</span><span class="s2">&quot;Unexpected status code&quot;</span><span class="p">)</span>
<a id="__codelineno-0-54" name="__codelineno-0-54"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<a id="__codelineno-0-55" name="__codelineno-0-55"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span> <span class="kn">from</span> <span class="nn">e</span>
<a id="__codelineno-0-56" name="__codelineno-0-56"></a>
<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-58" name="__codelineno-0-58"></a> <span class="n">trace</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
<a id="__codelineno-0-59" name="__codelineno-0-59"></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span><span class="p">(</span>
<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="sa">f</span><span class="s2">&quot;JSON parsing failed </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="p">)</span>
<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="k">if</span> <span class="n">model_class</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">trace</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">model_class</span><span class="o">.</span><span class="n">parse_obj</span><span class="p">(</span><span class="n">trace</span><span class="p">[</span><span class="s2">&quot;output&quot;</span><span class="p">])</span>
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="n">Trace</span><span class="o">.</span><span class="n">parse_obj</span><span class="p">(</span><span class="n">trace</span><span class="p">)</span>
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">raise</span> <span class="n">RemoteCallError</span><span class="p">(</span><span class="s2">&quot;Could not parse Trace&quot;</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@ -3299,7 +3419,7 @@ Returns:
<div class="doc doc-contents first">
<p>Add training data (with optional train-test splitting).</p>
<p>Add and tag datapoints, wrap them into traces. The <code>inputs</code> are available via the
<p>Add and tag data-points, wrap them into traces. The <code>inputs</code> are available via the
<code>.input</code> property, while <code>expected_outputs</code> under both the <code>.output</code> and <code>.feedback</code>
properties.</p>
<p>All generated traces are tagged with <code>ground_truth</code> by default. Additional tags can
@ -3316,6 +3436,18 @@ add up to 1.</p>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="gp">... </span> <span class="n">test_split_ratio</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="gp">... </span> <span class="n">validation_split_ratio</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="gp">... </span><span class="p">)</span>
</code></pre></div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="gp">&gt;&gt;&gt; </span><span class="n">add_ground_truth</span><span class="p">(</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="gp">... </span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="gp">... </span> <span class="p">[</span><span class="s1">&#39;odd&#39;</span><span class="p">,</span> <span class="s1">&#39;even&#39;</span><span class="p">,</span> <span class="s1">&#39;odd&#39;</span><span class="p">],</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="gp">... </span> <span class="n">tags</span><span class="o">=</span><span class="s1">&#39;my_tag&#39;</span><span class="p">,</span>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="gp">... </span> <span class="n">train_split_ratio</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="gp">... </span> <span class="n">test_split_ratio</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="gp">... </span> <span class="n">validation_split_ratio</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="gp">... </span><span class="p">)</span>
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="gt">Traceback (most recent call last):</span>
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="o">...</span>
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="gr">AssertionError</span>: <span class="n">The length of the inputs and expected_outputs must be equal</span>
</code></pre></div>
<p><strong>Parameters:</strong></p>
@ -3353,7 +3485,7 @@ scikit-learn)</p></td>
<tr>
<td><code>tags</code></td>
<td>
<code><span title="typing.List">List</span>[str]</code>
<code><span title="typing.Union">Union</span>[<span title="typing.List">List</span>[str], str]</code>
</td>
<td><p>A single tag or a list of tags to append to each generated trace's tags.</p></td>
<td>
@ -3478,18 +3610,32 @@ scikit-learn)</p></td>
<span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
<span class="normal"><a href="#__codelineno-0-100">100</a></span>
<span class="normal"><a href="#__codelineno-0-101">101</a></span>
<span class="normal"><a href="#__codelineno-0-102">102</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="k">def</span> <span class="nf">add_ground_truth</span><span class="p">(</span>
<span class="normal"><a href="#__codelineno-0-102">102</a></span>
<span class="normal"><a href="#__codelineno-0-103">103</a></span>
<span class="normal"><a href="#__codelineno-0-104">104</a></span>
<span class="normal"><a href="#__codelineno-0-105">105</a></span>
<span class="normal"><a href="#__codelineno-0-106">106</a></span>
<span class="normal"><a href="#__codelineno-0-107">107</a></span>
<span class="normal"><a href="#__codelineno-0-108">108</a></span>
<span class="normal"><a href="#__codelineno-0-109">109</a></span>
<span class="normal"><a href="#__codelineno-0-110">110</a></span>
<span class="normal"><a href="#__codelineno-0-111">111</a></span>
<span class="normal"><a href="#__codelineno-0-112">112</a></span>
<span class="normal"><a href="#__codelineno-0-113">113</a></span>
<span class="normal"><a href="#__codelineno-0-114">114</a></span>
<span class="normal"><a href="#__codelineno-0-115">115</a></span>
<span class="normal"><a href="#__codelineno-0-116">116</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="k">def</span> <span class="nf">add_ground_truth</span><span class="p">(</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a> <span class="n">inputs</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="n">Any</span><span class="p">],</span>
<a id="__codelineno-0-21" name="__codelineno-0-21"></a> <span class="n">expected_outputs</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="n">T</span><span class="p">],</span>
<a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">tags</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
<a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">tags</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
<a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="n">train_split_ratio</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
<a id="__codelineno-0-25" name="__codelineno-0-25"></a> <span class="n">test_split_ratio</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<a id="__codelineno-0-26" name="__codelineno-0-26"></a> <span class="n">validation_split_ratio</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span>
<a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-28" name="__codelineno-0-28"></a> <span class="sd">&quot;&quot;&quot;Add training data (with optional train-test splitting).</span>
<a id="__codelineno-0-29" name="__codelineno-0-29"></a>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Add and tag datapoints, wrap them into traces. The `inputs` are available via the</span>
<a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Add and tag data-points, wrap them into traces. The `inputs` are available via the</span>
<a id="__codelineno-0-31" name="__codelineno-0-31"></a><span class="sd"> `.input` property, while `expected_outputs` under both the `.output` and `.feedback`</span>
<a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> properties.</span>
<a id="__codelineno-0-33" name="__codelineno-0-33"></a>
@ -3508,60 +3654,74 @@ scikit-learn)</p></td>
<a id="__codelineno-0-46" name="__codelineno-0-46"></a><span class="sd"> ... validation_split_ratio=0.5,</span>
<a id="__codelineno-0-47" name="__codelineno-0-47"></a><span class="sd"> ... )</span>
<a id="__codelineno-0-48" name="__codelineno-0-48"></a>
<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> inputs: The inputs. (X in scikit-learn)</span>
<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> expected_outputs: The ground-truth values corresponding to the inputs. (y in</span>
<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> scikit-learn)</span>
<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> tags: A single tag or a list of tags to append to each generated trace&#39;s tags.</span>
<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> train_split_ratio: The probability-weight of giving each trace the `train` tag.</span>
<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> test_split_ratio: The probability-weight of giving each trace the `test` tag.</span>
<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> validation_split_ratio: The probability-weight of giving each trace the</span>
<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> `validation` tag.</span>
<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-59" name="__codelineno-0-59"></a>
<a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="n">inputs</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span>
<a id="__codelineno-0-61" name="__codelineno-0-61"></a> <span class="n">expected_outputs</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">expected_outputs</span><span class="p">)</span>
<a id="__codelineno-0-62" name="__codelineno-0-62"></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span>
<a id="__codelineno-0-63" name="__codelineno-0-63"></a> <span class="n">expected_outputs</span>
<a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="p">),</span> <span class="s2">&quot;The length of the inputs and expected_outputs must be equal&quot;</span>
<a id="__codelineno-0-65" name="__codelineno-0-65"></a>
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="n">sum_ratio</span> <span class="o">=</span> <span class="n">train_split_ratio</span> <span class="o">+</span> <span class="n">test_split_ratio</span> <span class="o">+</span> <span class="n">validation_split_ratio</span>
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">assert</span> <span class="n">sum_ratio</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;The sum of the split ratios must be a positive number&quot;</span>
<a id="__codelineno-0-68" name="__codelineno-0-68"></a>
<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="n">train_split_ratio</span> <span class="o">/=</span> <span class="n">sum_ratio</span>
<a id="__codelineno-0-70" name="__codelineno-0-70"></a> <span class="n">test_split_ratio</span> <span class="o">/=</span> <span class="n">sum_ratio</span>
<a id="__codelineno-0-71" name="__codelineno-0-71"></a> <span class="n">validation_split_ratio</span> <span class="o">/=</span> <span class="n">sum_ratio</span>
<a id="__codelineno-0-72" name="__codelineno-0-72"></a>
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="n">expected_outputs</span><span class="p">))</span>
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">shuffle</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">split_tags</span> <span class="o">=</span> <span class="p">(</span>
<a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="p">[</span><span class="n">TRAIN_SPLIT_TAG_NAME</span><span class="p">]</span> <span class="o">*</span> <span class="n">ceil</span><span class="p">(</span><span class="n">train_split_ratio</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span>
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="o">+</span> <span class="p">[</span><span class="n">TEST_SPLIT_TAG_NAME</span><span class="p">]</span> <span class="o">*</span> <span class="n">ceil</span><span class="p">(</span><span class="n">test_split_ratio</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span>
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="o">+</span> <span class="p">[</span><span class="n">VALIDATION_SPLIT_TAG_NAME</span><span class="p">]</span> <span class="o">*</span> <span class="n">ceil</span><span class="p">(</span><span class="n">validation_split_ratio</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span>
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="p">)</span>
<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">shuffle</span><span class="p">(</span><span class="n">split_tags</span><span class="p">)</span>
<a id="__codelineno-0-49" name="__codelineno-0-49"></a><span class="sd"> &gt;&gt;&gt; add_ground_truth(</span>
<a id="__codelineno-0-50" name="__codelineno-0-50"></a><span class="sd"> ... [1, 2],</span>
<a id="__codelineno-0-51" name="__codelineno-0-51"></a><span class="sd"> ... [&#39;odd&#39;, &#39;even&#39;, &#39;odd&#39;],</span>
<a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="sd"> ... tags=&#39;my_tag&#39;,</span>
<a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="sd"> ... train_split_ratio=1,</span>
<a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> ... test_split_ratio=1,</span>
<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="sd"> ... validation_split_ratio=0.5,</span>
<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> ... )</span>
<a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="sd"> Traceback (most recent call last):</span>
<a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> ...</span>
<a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> AssertionError: The length of the inputs and expected_outputs must be equal</span>
<a id="__codelineno-0-60" name="__codelineno-0-60"></a>
<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> inputs: The inputs. (X in scikit-learn)</span>
<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> expected_outputs: The ground-truth values corresponding to the inputs. (y in</span>
<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> scikit-learn)</span>
<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> tags: A single tag or a list of tags to append to each generated trace&#39;s tags.</span>
<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> train_split_ratio: The probability-weight of giving each trace the `train` tag.</span>
<a id="__codelineno-0-67" name="__codelineno-0-67"></a><span class="sd"> test_split_ratio: The probability-weight of giving each trace the `test` tag.</span>
<a id="__codelineno-0-68" name="__codelineno-0-68"></a><span class="sd"> validation_split_ratio: The probability-weight of giving each trace the</span>
<a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="sd"> `validation` tag.</span>
<a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-71" name="__codelineno-0-71"></a>
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">inputs</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span>
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">expected_outputs</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">expected_outputs</span><span class="p">)</span>
<a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span>
<a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="n">expected_outputs</span>
<a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="p">),</span> <span class="s2">&quot;The length of the inputs and expected_outputs must be equal&quot;</span>
<a id="__codelineno-0-77" name="__codelineno-0-77"></a>
<a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="n">tags</span> <span class="o">=</span> <span class="n">tags</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tags</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="n">tags</span><span class="p">]</span>
<a id="__codelineno-0-79" name="__codelineno-0-79"></a>
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">sum_ratio</span> <span class="o">=</span> <span class="n">train_split_ratio</span> <span class="o">+</span> <span class="n">test_split_ratio</span> <span class="o">+</span> <span class="n">validation_split_ratio</span>
<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="k">assert</span> <span class="n">sum_ratio</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;The sum of the split ratios must be a positive number&quot;</span>
<a id="__codelineno-0-82" name="__codelineno-0-82"></a>
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">created</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">traces</span> <span class="o">=</span> <span class="p">[</span>
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">cast</span><span class="p">(</span>
<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">Trace</span><span class="p">[</span><span class="n">T</span><span class="p">],</span>
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">Trace</span><span class="p">(</span> <span class="c1"># avoid ValueError: &quot;Trace&quot; object has no field &quot;__orig_class__&quot;</span>
<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">trace_id</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">uuid4</span><span class="p">()),</span>
<a id="__codelineno-0-89" name="__codelineno-0-89"></a> <span class="n">created</span><span class="o">=</span><span class="n">created</span><span class="p">,</span>
<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">original_execution_time_ms</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="n">logged_values</span><span class="o">=</span><span class="n">X</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span> <span class="k">else</span> <span class="p">{</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">X</span><span class="p">},</span>
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="n">models</span><span class="o">=</span><span class="p">[],</span>
<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="n">output</span><span class="o">=</span><span class="n">y</span><span class="p">,</span>
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="n">feedback</span><span class="o">=</span><span class="n">y</span><span class="p">,</span>
<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">exception</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="n">GROUND_TRUTH_TAG_NAME</span><span class="p">,</span> <span class="n">split_tag</span><span class="p">,</span> <span class="o">*</span><span class="n">tags</span><span class="p">],</span>
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="p">),</span>
<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="p">)</span>
<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="k">for</span> <span class="p">((</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="n">split_tag</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">split_tags</span><span class="p">)</span>
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="p">]</span>
<a id="__codelineno-0-101" name="__codelineno-0-101"></a>
<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">get_context</span><span class="p">()</span><span class="o">.</span><span class="n">tracing_database</span><span class="o">.</span><span class="n">save_batch</span><span class="p">(</span><span class="n">traces</span><span class="p">)</span>
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">train_split_ratio</span> <span class="o">/=</span> <span class="n">sum_ratio</span>
<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">test_split_ratio</span> <span class="o">/=</span> <span class="n">sum_ratio</span>
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">validation_split_ratio</span> <span class="o">/=</span> <span class="n">sum_ratio</span>
<a id="__codelineno-0-86" name="__codelineno-0-86"></a>
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">inputs</span><span class="p">,</span> <span class="n">expected_outputs</span><span class="p">))</span>
<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="n">shuffle</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
<a id="__codelineno-0-89" name="__codelineno-0-89"></a>
<a id="__codelineno-0-90" name="__codelineno-0-90"></a> <span class="n">split_tags</span> <span class="o">=</span> <span class="p">(</span>
<a id="__codelineno-0-91" name="__codelineno-0-91"></a> <span class="p">[</span><span class="n">TRAIN_SPLIT_TAG_NAME</span><span class="p">]</span> <span class="o">*</span> <span class="n">ceil</span><span class="p">(</span><span class="n">train_split_ratio</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span>
<a id="__codelineno-0-92" name="__codelineno-0-92"></a> <span class="o">+</span> <span class="p">[</span><span class="n">TEST_SPLIT_TAG_NAME</span><span class="p">]</span> <span class="o">*</span> <span class="n">ceil</span><span class="p">(</span><span class="n">test_split_ratio</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span>
<a id="__codelineno-0-93" name="__codelineno-0-93"></a> <span class="o">+</span> <span class="p">[</span><span class="n">VALIDATION_SPLIT_TAG_NAME</span><span class="p">]</span> <span class="o">*</span> <span class="n">ceil</span><span class="p">(</span><span class="n">validation_split_ratio</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">inputs</span><span class="p">))</span>
<a id="__codelineno-0-94" name="__codelineno-0-94"></a> <span class="p">)</span>
<a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">shuffle</span><span class="p">(</span><span class="n">split_tags</span><span class="p">)</span>
<a id="__codelineno-0-96" name="__codelineno-0-96"></a>
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="n">created</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="n">traces</span> <span class="o">=</span> <span class="p">[</span>
<a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="n">cast</span><span class="p">(</span>
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="n">Trace</span><span class="p">[</span><span class="n">T</span><span class="p">],</span>
<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="n">Trace</span><span class="p">(</span> <span class="c1"># avoid ValueError: &quot;Trace&quot; object has no field &quot;__orig_class__&quot;</span>
<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="n">trace_id</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">uuid4</span><span class="p">()),</span>
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">created</span><span class="o">=</span><span class="n">created</span><span class="p">,</span>
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="n">original_execution_time_ms</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="n">logged_values</span><span class="o">=</span><span class="n">X</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span> <span class="k">else</span> <span class="p">{</span><span class="s2">&quot;input&quot;</span><span class="p">:</span> <span class="n">X</span><span class="p">},</span>
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="n">models</span><span class="o">=</span><span class="p">[],</span>
<a id="__codelineno-0-107" name="__codelineno-0-107"></a> <span class="n">output</span><span class="o">=</span><span class="n">y</span><span class="p">,</span>
<a id="__codelineno-0-108" name="__codelineno-0-108"></a> <span class="n">feedback</span><span class="o">=</span><span class="n">y</span><span class="p">,</span>
<a id="__codelineno-0-109" name="__codelineno-0-109"></a> <span class="n">exception</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-110" name="__codelineno-0-110"></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="n">GROUND_TRUTH_TAG_NAME</span><span class="p">,</span> <span class="n">split_tag</span><span class="p">,</span> <span class="o">*</span><span class="n">tags</span><span class="p">],</span>
<a id="__codelineno-0-111" name="__codelineno-0-111"></a> <span class="p">),</span>
<a id="__codelineno-0-112" name="__codelineno-0-112"></a> <span class="p">)</span>
<a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="k">for</span> <span class="p">((</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="n">split_tag</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">split_tags</span><span class="p">)</span>
<a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">]</span>
<a id="__codelineno-0-115" name="__codelineno-0-115"></a>
<a id="__codelineno-0-116" name="__codelineno-0-116"></a> <span class="n">get_context</span><span class="p">()</span><span class="o">.</span><span class="n">tracing_database</span><span class="o">.</span><span class="n">save_batch</span><span class="p">(</span><span class="n">traces</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@ -3581,7 +3741,7 @@ scikit-learn)</p></td>
<div class="doc doc-contents first">
<p>Return training samples.</p>
<p>Combines, filters, and returns datapoints that have been either added by
<p>Combines, filters, and returns data-points that have been either added by
<code>add_ground_truth</code> or were the result of a prediction after which their trace got
a feedback through the RESP API-s <code>/traces/{trace_id}/feedback</code> endpoint
(end-to-end feedback).</p>
@ -3704,7 +3864,7 @@ filtering.</p></td>
<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Trace</span><span class="p">]:</span>
<a id="__codelineno-0-15" name="__codelineno-0-15"></a> <span class="sd">&quot;&quot;&quot;Return training samples.</span>
<a id="__codelineno-0-16" name="__codelineno-0-16"></a>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Combines, filters, and returns datapoints that have been either added by</span>
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> Combines, filters, and returns data-points that have been either added by</span>
<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> `add_ground_truth` or were the result of a prediction after which their trace got</span>
<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="sd"> a feedback through the RESP API-s `/traces/{trace_id}/feedback` endpoint</span>
<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="sd"> (end-to-end feedback).</span>

View file

@ -408,7 +408,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/use-service/" class="md-nav__link">
How to use a GreatAI service
How to deploy a GreatAI service
</a>
</li>
@ -422,7 +422,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/handle-training-data/" class="md-nav__link">
How to handle training data
How to manage training data
</a>
</li>
@ -436,7 +436,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/large_file/" class="md-nav__link">
How to use LargeFile
How to use LargeFile-s
</a>
</li>
@ -449,8 +449,8 @@
<li class="md-nav__item">
<a href="../../how-to-guides/call_remote.md" class="md-nav__link">
None
<a href="../../how-to-guides/call-remote/" class="md-nav__link">
Call remote GreatAI instances
</a>
</li>

View file

@ -408,7 +408,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/use-service/" class="md-nav__link">
How to use a GreatAI service
How to deploy a GreatAI service
</a>
</li>
@ -422,7 +422,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/handle-training-data/" class="md-nav__link">
How to handle training data
How to manage training data
</a>
</li>
@ -436,7 +436,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/large_file/" class="md-nav__link">
How to use LargeFile
How to use LargeFile-s
</a>
</li>
@ -449,8 +449,8 @@
<li class="md-nav__item">
<a href="../../how-to-guides/call_remote.md" class="md-nav__link">
None
<a href="../../how-to-guides/call-remote/" class="md-nav__link">
Call remote GreatAI instances
</a>
</li>

View file

@ -408,7 +408,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/use-service/" class="md-nav__link">
How to use a GreatAI service
How to deploy a GreatAI service
</a>
</li>
@ -422,7 +422,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/handle-training-data/" class="md-nav__link">
How to handle training data
How to manage training data
</a>
</li>
@ -436,7 +436,7 @@
<li class="md-nav__item">
<a href="../../how-to-guides/large_file/" class="md-nav__link">
How to use LargeFile
How to use LargeFile-s
</a>
</li>
@ -449,8 +449,8 @@
<li class="md-nav__item">
<a href="../../how-to-guides/call_remote.md" class="md-nav__link">
None
<a href="../../how-to-guides/call-remote/" class="md-nav__link">
Call remote GreatAI instances
</a>
</li>