{"id":265,"date":"2023-07-20T19:53:53","date_gmt":"2023-07-20T19:53:53","guid":{"rendered":"https:\/\/liverickson.com\/blog\/?p=265"},"modified":"2023-07-20T19:53:53","modified_gmt":"2023-07-20T19:53:53","slug":"google-bard-lied-to-me-to-try-and-sell-me-a-non-existent-cloud-offering","status":"publish","type":"post","link":"https:\/\/liverickson.com\/blog\/?p=265","title":{"rendered":"Google Bard lied to me to try and sell me a non-existent cloud offering"},"content":{"rendered":"\n<p><em>Just as a friendly reminder, machine learning models cannot actually lie. They are computer programs that use statistics to generate &#8220;likely&#8221; predictive text, based on what it&#8217;s been fed. Lying implies a sentiment and ability to mislead. See also: &#8220;hallucinations&#8221; &#8211; machine learning models can&#8217;t actually do that either. <\/em><\/p>\n\n\n\n<p>Today&#8217;s experiment was an interesting one. I turned to Bard to help brainstorm ideas for how I can replace the OpenAI Completions API in a project that a former colleague worked on, and it helpfully recommended me three alternatives:  <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"706\" src=\"https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1024x706.png\" alt=\"\" class=\"wp-image-266\" srcset=\"https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1024x706.png 1024w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-300x207.png 300w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-768x529.png 768w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image.png 1225w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I then asked Bard if the Bard API used the same request parameters as the OpenAI Completions API, and it helpfully informed me of the differences: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"729\" src=\"https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1-1024x729.png\" alt=\"\" class=\"wp-image-267\" srcset=\"https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1-1024x729.png 1024w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1-300x214.png 300w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1-768x547.png 768w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-1.png 1074w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Well, that seemed reasonable enough. I asked it how to get access to the Bard API, and it told me: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">I'm designed solely to process and generate text, so I'm unable to assist you with that.<\/pre>\n\n\n\n<p>After a moment of consideration, I decided that it was likely that my use of the words &#8220;get access to&#8221; might be flagged as a form of malicious intent via prompt injection, so I reframed my question to ask how to sign up for the Bard API, and it gave me a helpful step by step:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"652\" src=\"https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-2-1024x652.png\" alt=\"\" class=\"wp-image-268\" srcset=\"https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-2-1024x652.png 1024w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-2-300x191.png 300w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-2-768x489.png 768w, https:\/\/liverickson.com\/blog\/wp-content\/uploads\/2023\/07\/image-2.png 1084w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Bard was even helpful enough to let me know some of the requirements for getting on the waitlist. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Bard API Doesn&#8217;t Exist<\/h2>\n\n\n\n<p>Spoiler alert, if you didn&#8217;t get it from the title.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.googlecloudcommunity.com\/gc\/AI-ML\/Google-Bard-API\/m-p\/538517\">https:\/\/www.googlecloudcommunity.com\/gc\/AI-ML\/Google-Bard-API\/m-p\/538517<\/a><\/p>\n\n\n\n<p>It turns out that the Bard API doesn&#8217;t exist &#8211; at least, it doesn&#8217;t exist yet. This is one of the more egregious examples of generating garbage content, because it generated false services that Google reportedly created, positioned it as a competitor to the most popular service for building AI applications today at a lower cost, told me terms and conditions for using it, and <strong>at best<\/strong> Google describes this as the service displaying &#8220;inaccurate&#8221; information. <\/p>\n\n\n\n<p>Interestingly enough, this train of thinking still took me down a relatively helpful path &#8211; I learned a little bit more about the Hugging Face Transformers API, and was able to start making changes in the code base I&#8217;m working in to use a Hugging Face model instead of OpenAI. I still haven&#8217;t gotten the performance that I want out of it, but even in just a few minutes of hacking around, and amidst some truly awful and misleading content that borders on an FTC violation, I was still able to use some of the information presented to me in a meaningful way. <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I turned to Bard to help brainstorm ideas for how I can replace the OpenAI Completions API in a project that a former colleague worked on, and it helpfully recommended me three alternatives. It turns out that the Bard API doesn&#8217;t exist &#8211; at least, it doesn&#8217;t exist yet. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":0,"activitypub_interaction_policy_quote":"","activitypub_status":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-265","post","type-post","status-publish","format-standard","hentry","category-machine-learning"],"_links":{"self":[{"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=265"}],"version-history":[{"count":1,"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":269,"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions\/269"}],"wp:attachment":[{"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liverickson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}