<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Surface Duo Blog</provider_name><provider_url>https://devblogs.microsoft.com/surface-duo</provider_url><author_name>Craig Dunn</author_name><author_url>https://devblogs.microsoft.com/surface-duo/author/craigdunn/</author_url><title>Jetchat with OpenAI on Android - Surface Duo Blog</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="9AimztjE6E"&gt;&lt;a href="https://devblogs.microsoft.com/surface-duo/android-openai-chatgpt-5/"&gt;Jetchat with OpenAI on Android&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://devblogs.microsoft.com/surface-duo/android-openai-chatgpt-5/embed/#?secret=9AimztjE6E" width="600" height="338" title="&#x201C;Jetchat with OpenAI on Android&#x201D; &#x2014; Surface Duo Blog" data-secret="9AimztjE6E" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script type="text/javascript"&gt;
/* &lt;![CDATA[ */
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://devblogs.microsoft.com/surface-duo/wp-includes/js/wp-embed.min.js
/* ]]&gt; */
&lt;/script&gt;
</html><thumbnail_url>https://devblogs.microsoft.com/surface-duo/wp-content/uploads/sites/53/2023/04/word-image-3174-1.png</thumbnail_url><thumbnail_width>1430</thumbnail_width><thumbnail_height>964</thumbnail_height><description>Hello prompt engineers, The last three blogs have been about exploring the OpenAI API completion, edit, and image endpoints from Android, using HttpClient and crafting JSON requests and responses. This post is about implementing the chat API in an Android app, using the open-source client library openai-kotlin on GitHub. The library makes it easier to [&hellip;]</description></oembed>
