<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Databricks GenAI &amp;amp; ML Announcements — November 2024 in Announcements</title>
    <link>https://community.databricks.com/t5/announcements/databricks-genai-amp-ml-announcements-november-2024/m-p/101272#M228</link>
    <description>&lt;DIV class="eq er es et eu l"&gt;
&lt;ARTICLE&gt;
&lt;DIV class="l"&gt;
&lt;DIV class="l"&gt;
&lt;SECTION&gt;
&lt;DIV&gt;
&lt;DIV class="fj fk fl fm fn"&gt;
&lt;DIV class="ab cb"&gt;
&lt;DIV class="ci bh ev ew ex ey"&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;No time to read? Check out this 5-minute recap video of all the announcements listed below for November 2024 &lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_down:"&gt;👇&lt;/span&gt;&lt;/P&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;→ Subscribe to our&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://www.youtube.com/channel/UCIRWm64xQdLY_0DO8omKHpw" target="_blank" rel="noopener ugc nofollow"&gt;&lt;STRONG class="lc fr"&gt;YouTube channel&lt;/STRONG&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for regular updates&lt;/P&gt;
&lt;FIGURE class="lz ma mb mc md me"&gt;
&lt;DIV class="mf mg l ed"&gt;
&lt;DIV class="mh mi l"&gt;&lt;IFRAME src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fvu3pwoOIeE8%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dvu3pwoOIeE8&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fvu3pwoOIeE8%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no" allowfullscreen="" class="em n fe dz bh" title="November Databricks GenAI &amp;amp; ML Updates"&gt;&lt;/IFRAME&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/FIGURE&gt;
&lt;H1 id="7d5a" class="mj mk fq bf ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng bk" data-selectable-paragraph=""&gt;Announcements&lt;/H1&gt;
&lt;H2 id="e0b3" class="nh mk fq bf ml ni nj nk mp nl nm nn mt ll no np nq lp nr ns nt lt nu nv nw nx bk" data-selectable-paragraph=""&gt;Mosaic AI Model Training rebrand&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld ny lf lg lh nz lj lk ll oa ln lo lp ob lr ls lt oc lv lw lx fj bk" data-selectable-paragraph=""&gt;Mosaic AI Model Training has been rebranded to encompass existing features:&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="21ba" class="la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;A class="af ly" href="https://docs.databricks.com/en/large-language-models/foundation-model-training/index.html" target="_blank" rel="noopener ugc nofollow"&gt;Foundation Model Fine-tuning&lt;/A&gt;, previously known as Mosaic AI Model Training, continues to offer advanced customization for foundation models.&lt;/LI&gt;
&lt;LI id="06ed" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;A class="af ly" href="https://docs.databricks.com/en/machine-learning/automl/index.html" target="_blank" rel="noopener ugc nofollow"&gt;AutoML features&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;can now be accessed from the Experiments section.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1 id="f4f8" class="mj mk fq bf ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng bk" data-selectable-paragraph=""&gt;Other Platform updates&lt;/H1&gt;
&lt;UL class=""&gt;
&lt;LI id="0c64" class="la lb fq lc b ld ny lf lg lh nz lj lk ll oa ln lo lp ob lr ls lt oc lv lw lx od oe of bk" data-selectable-paragraph=""&gt;Foundation Model APIs pay-per-token workloads are now supported in all regions where Mosaic AI Model Serving is available. If your workspace is in a Model Serving region but not in a U.S. or EU region, your workspace must be enabled for&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://docs.databricks.com/en/resources/databricks-geos.html#cross-geo-processing" target="_blank" rel="noopener ugc nofollow"&gt;cross-Geo data processing&lt;/A&gt;. When enabled, your pay-per-token workload is routed to the U.S.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://docs.databricks.com/en/resources/databricks-geos.html" target="_blank" rel="noopener ugc nofollow"&gt;Databricks Geo&lt;/A&gt;.&lt;/LI&gt;
&lt;LI id="6811" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;Breaking change: Hosted RStudio is end-of-life. In Databricks Runtime 16.0 and above, Databricks-hosted RStudio Server is end-of-life and unavailable on any Databricks workspace. To learn more and see a list of alternatives to RStudio, see&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://docs.databricks.com/en/sparkr/hosted-rstudio-server.html#deprecation" target="_blank" rel="noopener ugc nofollow"&gt;Hosted RStudio Server deprecation&lt;/A&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1 id="8805" class="mj mk fq bf ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng bk" data-selectable-paragraph=""&gt;Demos&lt;/H1&gt;
&lt;UL class=""&gt;
&lt;LI id="9fc6" class="la lb fq lc b ld ny lf lg lh nz lj lk ll oa ln lo lp ob lr ls lt oc lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;STRONG class="lc fr"&gt;Serving Vision Language Models&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;on Databricks | Mlflow Extensions →&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://www.youtube.com/watch?v=I2YjOd4sI00" target="_blank" rel="noopener ugc nofollow"&gt;Demo&lt;/A&gt;&lt;/LI&gt;
&lt;LI id="72b5" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;Using GenAI and Traditional ML for&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="lc fr"&gt;Anomaly &amp;amp; Outlier Detection&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;→&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://www.youtube.com/watch?v=F3cWHi3Eep8" target="_blank" rel="noopener ugc nofollow"&gt;Demo&lt;/A&gt;&lt;/LI&gt;
&lt;LI id="f58d" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;STRONG class="lc fr"&gt;Optimise RAG applications&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="lc fr"&gt;semantic caching&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;on Databricks →&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://www.youtube.com/watch?v=suwphPToYlk" target="_blank" rel="noopener ugc nofollow"&gt;Demo&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1 id="b883" class="mj mk fq bf ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng bk" data-selectable-paragraph=""&gt;Blogposts&lt;/H1&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld ny lf lg lh nz lj lk ll oa ln lo lp ob lr ls lt oc lv lw lx fj bk" data-selectable-paragraph=""&gt;Demo:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://www.youtube.com/watch?v=mIZHRqMoJec" target="_blank" rel="noopener ugc nofollow"&gt;https://www.youtube.com/watch?v=mIZHRqMoJec&lt;/A&gt;&lt;/P&gt;
&lt;H2 id="9b01" class="nh mk fq bf ml ni nj nk mp nl nm nn mt ll no np nq lp nr ns nt lt nu nv nw nx bk" data-selectable-paragraph=""&gt;&lt;STRONG class="al"&gt;Introducing Structured Outputs for Batch and Agent Workflows&lt;/STRONG&gt;&lt;/H2&gt;
&lt;UL class=""&gt;
&lt;LI id="2d88" class="la lb fq lc b ld ny lf lg lh nz lj lk ll oa ln lo lp ob lr ls lt oc lv lw lx od oe of bk" data-selectable-paragraph=""&gt;This blog post explores in detail how to use structured outputs in Databricks for batch and agent workflows, along with code snippets.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;&lt;STRONG class="lc fr"&gt;Use case 1 — Batch structured generation&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="b4c0" class="la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx od oe of bk" data-selectable-paragraph=""&gt;For batch structured generation, you can use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="cx ol om on oo b"&gt;response_format&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;API field to reliably structure JSON outputs from large datasets. This is available for the Foundation Model API models, including fine-tuned models. The three different&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="cx ol om on oo b"&gt;response_format&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;are:&lt;/LI&gt;
&lt;LI id="6f5b" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;Text:&lt;/STRONG&gt;&lt;/CODE&gt;&lt;STRONG class="lc fr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;Unstructured text outputted from the model based on a prompt.&lt;/LI&gt;
&lt;LI id="042d" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;Json_object:&lt;/STRONG&gt;&lt;/CODE&gt;&lt;STRONG class="lc fr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;Output a JSON object of an unspecified schema that the model intuits from the prompt&lt;/LI&gt;
&lt;LI id="cf93" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;Json_schema:&lt;/STRONG&gt;&lt;/CODE&gt;&lt;STRONG class="lc fr"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;Output a JSON object adherent to a JSON schema applied to the API.&lt;/LI&gt;
&lt;LI id="1f02" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;Note that the Open AI SDK makes it easy to define object schemas using&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://docs.pydantic.dev/latest/" target="_blank" rel="noopener ugc nofollow"&gt;Pydantic&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that you can pass to the model instead of an articulated JSON schema.&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE class="lz ma mb mc md op oo oq bp or bb bk"&gt;&lt;SPAN class="os mk fq oo b bg ot ou l ov ow" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; pydantic &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; BaseModel&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; openai &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; OpenAI&lt;BR /&gt;&lt;BR /&gt;DATABRICKS_TOKEN = os.environ.get(&lt;SPAN class="hljs-string"&gt;'YOUR_DATABRICKS_TOKEN'&lt;/SPAN&gt;)&lt;BR /&gt;DATABRICKS_BASE_URL = os.environ.get(&lt;SPAN class="hljs-string"&gt;'YOUR_DATABRICKS_BASE_URL'&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;client = OpenAI(&lt;BR /&gt;  api_key=DATABRICKS_TOKEN,&lt;BR /&gt;  base_url=DATABRICKS_BASE_URL&lt;BR /&gt;  )&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;class&lt;/SPAN&gt; &lt;SPAN class="hljs-title.class"&gt;CalendarEvent&lt;/SPAN&gt;(&lt;SPAN class="hljs-title.class.inherited"&gt;BaseModel&lt;/SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;BR /&gt;    name: &lt;SPAN class="hljs-built_in"&gt;str&lt;/SPAN&gt;&lt;BR /&gt;    date: &lt;SPAN class="hljs-built_in"&gt;str&lt;/SPAN&gt;&lt;BR /&gt;    participants: &lt;SPAN class="hljs-built_in"&gt;list&lt;/SPAN&gt;[&lt;SPAN class="hljs-built_in"&gt;str&lt;/SPAN&gt;]&lt;BR /&gt;&lt;BR /&gt;completion = client.beta.chat.completions.parse(&lt;BR /&gt;    model=&lt;SPAN class="hljs-string"&gt;"databricks-meta-llama-3-1-70b-instruct"&lt;/SPAN&gt;,&lt;BR /&gt;    messages=[&lt;BR /&gt;        {&lt;SPAN class="hljs-string"&gt;"role"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"system"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"content"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"Extract the event information."&lt;/SPAN&gt;},&lt;BR /&gt;        {&lt;SPAN class="hljs-string"&gt;"role"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"user"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"content"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"Alice and Bob are going to a science fair on Friday."&lt;/SPAN&gt;},&lt;BR /&gt;    ],&lt;BR /&gt;    response_format=CalendarEvent,&lt;BR /&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-built_in"&gt;print&lt;/SPAN&gt;(completion.choices[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;].message.parsed)&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;#name='science fair' date='Friday' participants=['Alice', 'Bob']&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;&lt;STRONG class="lc fr"&gt;Use case 2 — Agents with function calling&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="f886" class="la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx od oe of bk" data-selectable-paragraph=""&gt;The second use case for structured outputs is when you build Agents with function calling. Function calling allows LLMs to consistently output function calls to APIs within agent workflows. They’re currently available for Llama 3 70B and Llama 405B.&lt;/LI&gt;
&lt;LI id="b2d3" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;With the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="cx ol om on oo b"&gt;tools&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/CODE&gt;parameter, you can specify a list of potential tools that the LLM can call, where each tool is a function defined with a name, description, and parameters in the form of a JSON schema. You can then use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="cx ol om on oo b"&gt;tool_choice&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to determine how tools are called. The options are:&lt;/LI&gt;
&lt;LI id="6f63" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;none&lt;/STRONG&gt;&lt;/CODE&gt;&lt;STRONG class="lc fr"&gt;:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;The model will not call any tool listed in tools.&lt;/LI&gt;
&lt;LI id="e028" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;auto&lt;/STRONG&gt;&lt;/CODE&gt;: The model will decide the relevance of whether a tool from the tools list should be called or not. If no tool is called, the model outputs unstructured text like normal.&lt;/LI&gt;
&lt;LI id="c768" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;required&lt;/STRONG&gt;&lt;/CODE&gt;: The model will definitely output one of the tools in the list of tools no matter the relevance&lt;/LI&gt;
&lt;LI id="42c8" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;CODE class="cx ol om on oo b"&gt;&lt;STRONG class="lc fr"&gt;{"type": "function", "function": {"name": "my_function"}}&lt;/STRONG&gt;&lt;/CODE&gt;: If ”my_function” is the name of a valid function in the list of tools, the model will be forced to pick that function.&lt;/LI&gt;
&lt;/UL&gt;
&lt;PRE class="lz ma mb mc md op oo oq bp or bb bk"&gt;&lt;SPAN class="os mk fq oo b bg ot ou l ov ow" data-selectable-paragraph=""&gt;from openai import OpenAI&lt;BR /&gt;&lt;BR /&gt;DATABRICKS_TOKEN = &lt;SPAN class="hljs-built_in"&gt;os&lt;/SPAN&gt;.environ.get(&lt;SPAN class="hljs-string"&gt;'YOUR_DATABRICKS_TOKEN'&lt;/SPAN&gt;)&lt;BR /&gt;DATABRICKS_BASE_URL = &lt;SPAN class="hljs-built_in"&gt;os&lt;/SPAN&gt;.environ.get(&lt;SPAN class="hljs-string"&gt;'YOUR_DATABRICKS_BASE_URL'&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;client = OpenAI(&lt;BR /&gt;  api_key=DATABRICKS_TOKEN,&lt;BR /&gt;  base_url=DATABRICKS_BASE_URL&lt;BR /&gt;  )&lt;BR /&gt;&lt;BR /&gt;tools = [&lt;BR /&gt;    {&lt;BR /&gt;        &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"function"&lt;/SPAN&gt;,&lt;BR /&gt;        &lt;SPAN class="hljs-string"&gt;"function"&lt;/SPAN&gt;: {&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"name"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"get_delivery_date"&lt;/SPAN&gt;,&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"description"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"Get the delivery date for a customer's order. Call this whenever you need to know the delivery date, for example when a customer asks 'Where is my package'"&lt;/SPAN&gt;,&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"parameters"&lt;/SPAN&gt;: {&lt;BR /&gt;                &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"object"&lt;/SPAN&gt;,&lt;BR /&gt;                &lt;SPAN class="hljs-string"&gt;"properties"&lt;/SPAN&gt;: {&lt;BR /&gt;                    &lt;SPAN class="hljs-string"&gt;"order_id"&lt;/SPAN&gt;: {&lt;BR /&gt;                        &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"string"&lt;/SPAN&gt;,&lt;BR /&gt;                        &lt;SPAN class="hljs-string"&gt;"description"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"The customer's order ID."&lt;/SPAN&gt;,&lt;BR /&gt;                    },&lt;BR /&gt;                },&lt;BR /&gt;                &lt;SPAN class="hljs-string"&gt;"required"&lt;/SPAN&gt;: [&lt;SPAN class="hljs-string"&gt;"order_id"&lt;/SPAN&gt;],&lt;BR /&gt;            },&lt;BR /&gt;        }&lt;BR /&gt;    },&lt;BR /&gt;    {&lt;BR /&gt;        &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"function"&lt;/SPAN&gt;,&lt;BR /&gt;        &lt;SPAN class="hljs-string"&gt;"function"&lt;/SPAN&gt;: {&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"name"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"get_relevant_products"&lt;/SPAN&gt;,&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"description"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"Return a list of relevant products that are being sold for a given search query. For example, call this if a customer asks 'What laptops do you have for sale?'"&lt;/SPAN&gt;,&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"parameters"&lt;/SPAN&gt;: {&lt;BR /&gt;                &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"object"&lt;/SPAN&gt;,&lt;BR /&gt;                &lt;SPAN class="hljs-string"&gt;"properties"&lt;/SPAN&gt;: {&lt;BR /&gt;                    &lt;SPAN class="hljs-string"&gt;"search_query"&lt;/SPAN&gt;: {&lt;BR /&gt;                        &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"string"&lt;/SPAN&gt;,&lt;BR /&gt;                        &lt;SPAN class="hljs-string"&gt;"description"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"The category of products to search for."&lt;/SPAN&gt;,&lt;BR /&gt;                    },&lt;BR /&gt;                    &lt;SPAN class="hljs-string"&gt;"number_of_items"&lt;/SPAN&gt;: {&lt;BR /&gt;                        &lt;SPAN class="hljs-string"&gt;"type"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"integer"&lt;/SPAN&gt;,&lt;BR /&gt;                        &lt;SPAN class="hljs-string"&gt;"description"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"The number of items to return in the search response. Default is 5 and maximum is 20."&lt;/SPAN&gt;,&lt;BR /&gt;                    },&lt;BR /&gt;                },&lt;BR /&gt;                &lt;SPAN class="hljs-string"&gt;"required"&lt;/SPAN&gt;: [&lt;SPAN class="hljs-string"&gt;"search_query"&lt;/SPAN&gt;],&lt;BR /&gt;            },&lt;BR /&gt;        }&lt;BR /&gt;    }&lt;BR /&gt;]&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;response = client.chat.completions.&lt;SPAN class="hljs-built_in"&gt;create&lt;/SPAN&gt;(&lt;BR /&gt;    model=&lt;SPAN class="hljs-string"&gt;"databricks-meta-llama-3-1-70b-instruct"&lt;/SPAN&gt;,&lt;BR /&gt;    messages=[&lt;BR /&gt;        {&lt;SPAN class="hljs-string"&gt;"role"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"user"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"content"&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"Do you have any keyboards for sale?"&lt;/SPAN&gt;}],&lt;BR /&gt;    tools=tools,&lt;BR /&gt;    tool_choice=&lt;SPAN class="hljs-string"&gt;"auto"&lt;/SPAN&gt;,&lt;BR /&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-built_in"&gt;print&lt;/SPAN&gt;(response.choices[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;].message.tool_calls)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;UL class=""&gt;
&lt;LI id="5925" class="la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx od oe of bk" data-selectable-paragraph=""&gt;They also give tips to use simpler JSON schemas to produce higher quality outputs compared to more complex JSON schemas, and what you should avoid (eg highly nested JSON schemas). They run through an example of what good looks like.&lt;/LI&gt;
&lt;LI id="959e" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;A class="af ly" href="https://www.databricks.com/blog/introducing-structured-outputs-batch-and-agent-workflows" target="_blank" rel="noopener ugc nofollow"&gt;Link&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to blog post&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;&lt;STRONG class="lc fr"&gt;AI Agent Systems: Modular Engineering for Reliable Enterprise AI Applications&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="07b5" class="la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx od oe of bk" data-selectable-paragraph=""&gt;This blog post explores the evolution of technological systems from monolithic designs to modular architectures, highlighting the benefits of modularity in managing complexity, enhancing maintainability, and improving extensibility. It traces this trend across industries such as automotive, software, and AI. The transition is particularly relevant to LLMs, which initially operated as monolithic systems with limited flexibility and reliability for enterprise use. Modular AI agent systems address these limitations by separating functions like data retrieval, deterministic processing, and reasoning into independently verifiable components. This enables greater control, compliance with regulatory frameworks, and adaptability for various applications. For instance, healthcare applications can isolate data retrieval from interpretation to meet compliance standards while maintaining system reliability and accuracy.&lt;/LI&gt;
&lt;LI id="7f13" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;Databricks adopted this modular approach with its Mosaic AI framework, which integrates tools for evaluation, monitoring, and governance. These modular AI agent systems combine components like embedding models, vector databases, and fine-tuned LLMs to deliver high-quality outputs. This architecture also allows for the customization of applications to specific domains. The blog concludes that moving from monolithic LLMs to modular intelligence systems represents a paradigm shift in AI application development, enabling higher reliability and extensibility.&lt;/LI&gt;
&lt;LI id="e281" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;A class="af ly" href="https://www.databricks.com/blog/ai-agent-systems" target="_blank" rel="noopener ugc nofollow"&gt;Link&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to blog post&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;&lt;STRONG class="lc fr"&gt;Securing the Future: How AI Gateways Protect AI Agent Systems in the Era of Generative AI&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="b115" class="la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx od oe of bk" data-selectable-paragraph=""&gt;Organizations need to go beyond traditional API policies to secure AI agent systems. The key lies in building AI gateways that protect the API layers and evaluate the instructions sent to the AI agent system. This blog explores how AI Gateways can secure AI agent systems, ensuring their safe deployment and operation in today’s complex digital landscape.&lt;/LI&gt;
&lt;LI id="a107" class="la lb fq lc b ld og lf lg lh oh lj lk ll oi ln lo lp oj lr ls lt ok lv lw lx od oe of bk" data-selectable-paragraph=""&gt;&lt;A class="af ly" href="https://www.databricks.com/blog/ai-gateways-secure-ai-agent-systems" target="_blank" rel="noopener ugc nofollow"&gt;Link&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to blog post&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/SECTION&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/ARTICLE&gt;
&lt;/DIV&gt;
&lt;DIV class="l"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;FOOTER class="ox oy oz pa pb ab q pc pd c"&gt;
&lt;DIV class="l ae"&gt;
&lt;DIV class="ab cb"&gt;
&lt;DIV class="ci bh ev ew ex ey"&gt;
&lt;DIV class="ab cp pe"&gt;
&lt;DIV class="ab q iu"&gt;
&lt;DIV class="pf l"&gt;
&lt;DIV class="ab q iu iv"&gt;
&lt;DIV class="pw-multi-vote-icon ed xk ix iy iz"&gt;
&lt;DIV class=""&gt;
&lt;DIV&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="71" aria-labelledby="71"&gt;
&lt;DIV class="ja xl jc jd je jf jg am jh ji jj iz"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="bq ab"&gt;
&lt;DIV&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="8" aria-labelledby="8"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="ab q"&gt;
&lt;DIV class="pl l hi"&gt;
&lt;DIV&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="9" aria-labelledby="9"&gt;
&lt;DIV class="bm" aria-hidden="false"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="pl l hi"&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"&gt;
&lt;DIV&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="10" aria-labelledby="10"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="bm" aria-hidden="false"&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="creatorActionOverflowMenu" aria-labelledby="creatorActionOverflowMenu"&gt;
&lt;DIV class="so l hi"&gt;
&lt;DIV&gt;
&lt;DIV class="bm" aria-hidden="false" aria-describedby="204" aria-labelledby="204"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/FOOTER&gt;
&lt;DIV class="pm pn po pp pq l"&gt;
&lt;DIV class="ab cb"&gt;
&lt;DIV class="ci bh ev ew ex ey"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Wed, 05 Mar 2025 05:10:29 GMT</pubDate>
    <dc:creator>lara_rachidi</dc:creator>
    <dc:date>2025-03-05T05:10:29Z</dc:date>
    <item>
      <title>Databricks GenAI &amp; ML Announcements — November 2024</title>
      <link>https://community.databricks.com/t5/announcements/databricks-genai-amp-ml-announcements-november-2024/m-p/101272#M228</link>
      <description>&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;No time to read? Check out this 5-minute recap video of all the announcements listed below for November 2024 &lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_down:"&gt;👇&lt;/span&gt;&lt;/P&gt;
&lt;P class="pw-post-body-paragraph la lb fq lc b ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx fj bk" data-selectable-paragraph=""&gt;→ Subscribe to our&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="af ly" href="https://www.youtube.com/channel/UCIRWm64xQdLY_0DO8omKHpw" target="_blank" rel="noopener ugc nofollow"&gt;&lt;STRONG class="lc fr"&gt;YouTube channel&lt;/STRONG&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for regular updates&lt;/P&gt;
&lt;FIGURE class="lz ma mb mc md me"&gt;
&lt;DIV class="mf mg l ed"&gt;
&lt;DIV class="mh mi l"&gt;&lt;IFRAME src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fvu3pwoOIeE8%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dvu3pwoOIeE8&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fvu3pwoOIeE8%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no" allowfullscreen="" class="em n fe dz bh" title="November Databricks GenAI &amp;amp; ML Updates"&gt;&lt;/IFRAME&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/FIGURE&gt;
&lt;H1 id="7d5a" class="mj mk fq bf ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng bk" data-selectable-paragraph=""&gt;&amp;nbsp;&lt;/H1&gt;</description>
      <pubDate>Wed, 05 Mar 2025 05:10:29 GMT</pubDate>
      <guid>https://community.databricks.com/t5/announcements/databricks-genai-amp-ml-announcements-november-2024/m-p/101272#M228</guid>
      <dc:creator>lara_rachidi</dc:creator>
      <dc:date>2025-03-05T05:10:29Z</dc:date>
    </item>
  </channel>
</rss>

