Surface Duo Blog
Build great Android experiences, from AI to foldable and large-screens.
Latest posts
OpenAI tokens and limits
Hello prompt engineers, The Jetchat demo that we’ve been covering in this blog series uses the OpenAI Chat API, and in each blog post where we add ...
Prompt engineering tips
Hello prompt engineers, We’ve been sharing a lot of OpenAI content the last few months, and because each blog post typically focuses on a specific ...
Dynamic Sqlite queries with OpenAI chat functions
Hello prompt engineers, Previous blogs explained how to add droidcon session favorites to a database and also cache the embedding vectors in a ...
Embedding vector caching (redux)
Hello prompt engineers, Earlier this year I tried to create a hardcoded cache of embedding vectors, only to be thwarted by the limitations of Kotlin...
Chat memory with OpenAI functions
Hello prompt engineers, We first introduced OpenAI chat functions with a weather service and then a time-based conference sessions query. Both...
Combining OpenAI function calls with embeddings
Hello prompt engineers, Last week’s post introduced the OpenAI chat function calling to implement a live weather response. This week, we’ll look ...
OpenAI chat functions on Android
Hello prompt engineers, OpenAI recently announced a new feature – function calling – that makes it easier to extend the chat API with external ...
Multimodal Augmented Inputs in LLMs using Azure Cognitive Services
Hello AI enthusiasts, This week, we’ll be talking about how you can use Azure Cognitive Services to enhance the types of inputs your Android AI ...
Embedding vector caching
Hello prompt engineers, A few weeks ago I added a custom datastore (the droidcon SF schedule) to the Jetchat OpenAI chat sample. One of the ‘hacks...