j1-template 2024.1.5 → 2024.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/layouts/content_generator_page.html +0 -34
- data/_includes/themes/j1/modules/searcher/generator.html +4 -1
- data/_includes/themes/j1/modules/searcher/procedures/topsearch.proc +59 -56
- data/assets/data/authclient.html +1 -8
- data/assets/data/banner.html +1 -7
- data/assets/data/fab.html +2 -13
- data/assets/data/footer.html +0 -3
- data/assets/data/galeries.html +2 -13
- data/assets/data/gemini-ui.html +74 -21
- data/assets/data/iframes.html +1 -4
- data/assets/data/masonry.html +1 -13
- data/assets/data/masterslider.html +10 -21
- data/assets/data/menu.html +6 -14
- data/assets/data/mmenu.html +6 -5
- data/assets/data/mmenu_toc.html +2 -1
- data/assets/data/panel.html +4 -11
- data/assets/data/particles.yml +8 -8
- data/assets/data/quicklinks.html +4 -23
- data/assets/data/rtext_resizer.html +3 -1
- data/assets/data/slick.html +9 -11
- data/assets/data/translator.html +0 -1
- data/assets/themes/j1/adapter/js/advertising.js +143 -182
- data/assets/themes/j1/adapter/js/algolia.js +61 -54
- data/assets/themes/j1/adapter/js/analytics.js +68 -52
- data/assets/themes/j1/adapter/js/asciidoctor.js +32 -20
- data/assets/themes/j1/adapter/js/attic.js +75 -69
- data/assets/themes/j1/adapter/js/bmd.js +44 -26
- data/assets/themes/j1/adapter/js/carousel.js +117 -92
- data/assets/themes/j1/adapter/js/chatbot.js +77 -35
- data/assets/themes/j1/adapter/js/clipboard.js +67 -49
- data/assets/themes/j1/adapter/js/comments.js +93 -70
- data/assets/themes/j1/adapter/js/cookieConsent.js +157 -159
- data/assets/themes/j1/adapter/js/customFunctions.js +52 -35
- data/assets/themes/j1/adapter/js/customModule.js +61 -50
- data/assets/themes/j1/adapter/js/docsearch.js +55 -34
- data/assets/themes/j1/adapter/js/dropdowns.js +66 -52
- data/assets/themes/j1/adapter/js/fab.js +124 -109
- data/assets/themes/j1/adapter/js/gallery.js +68 -49
- data/assets/themes/j1/adapter/js/gemini.js +961 -301
- data/assets/themes/j1/adapter/js/iconPicker.js +76 -54
- data/assets/themes/j1/adapter/js/iconPickerPage.js +279 -0
- data/assets/themes/j1/adapter/js/iframer.js +84 -63
- data/assets/themes/j1/adapter/js/j1.js +605 -542
- data/assets/themes/j1/adapter/js/lazyLoader.js +43 -24
- data/assets/themes/j1/adapter/js/lightbox.js +53 -52
- data/assets/themes/j1/adapter/js/logger.js +78 -66
- data/assets/themes/j1/adapter/js/lunr.js +684 -86
- data/assets/themes/j1/adapter/js/masonry.js +84 -68
- data/assets/themes/j1/adapter/js/masterslider.js +136 -137
- data/assets/themes/j1/adapter/js/mmenu.js +102 -66
- data/assets/themes/j1/adapter/js/navigator.js +291 -356
- data/assets/themes/j1/adapter/js/particles.js +62 -40
- data/assets/themes/j1/adapter/js/rangeSlider.js +66 -48
- data/assets/themes/j1/adapter/js/rouge.js +63 -44
- data/assets/themes/j1/adapter/js/rtable.js +56 -40
- data/assets/themes/j1/adapter/js/rtextResizer.js +57 -44
- data/assets/themes/j1/adapter/js/scroller.js +170 -133
- data/assets/themes/j1/adapter/js/slick.js +99 -97
- data/assets/themes/j1/adapter/js/slimSelect.js +288 -0
- data/assets/themes/j1/adapter/js/speak2me.js +124 -128
- data/assets/themes/j1/adapter/js/themeToggler.js +118 -97
- data/assets/themes/j1/adapter/js/{themer.js → themes.js} +144 -113
- data/assets/themes/j1/adapter/js/toccer.js +88 -54
- data/assets/themes/j1/adapter/js/translator.js +74 -70
- data/assets/themes/j1/adapter/js/waves.js +75 -58
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +29 -11
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +2 -2
- data/assets/themes/j1/core/js/template.js +474 -420
- data/assets/themes/j1/core/js/template.min.js +7 -7
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/carousel/css/theme/uno.css +4 -4
- data/assets/themes/j1/modules/carousel/css/theme/uno.min.css +1 -1
- data/assets/themes/j1/modules/clipboard/js/clipboard.js +0 -1
- data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +27 -21
- data/assets/themes/j1/modules/iconPicker/css/theme/uno.css +58 -0
- data/assets/themes/j1/modules/iconPicker/css/theme/uno.min.css +16 -0
- data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.0.js +493 -0
- data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +7 -7
- data/assets/themes/j1/modules/js-cookies/js/js.cookie.js +147 -0
- data/assets/themes/j1/modules/js-cookies/js/js.cookie.min.js +2 -0
- data/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.js +4 -4
- data/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.min.js +2 -10
- data/assets/themes/j1/modules/lunr/css/j1.css +12 -6
- data/assets/themes/j1/modules/lunr/css/j1.min.css +1 -1
- data/assets/themes/j1/modules/lunr/js/j1.js +46 -43
- data/assets/themes/j1/modules/lunr/js/j1.min.js +1 -1
- data/assets/themes/j1/modules/masterslider/js/masterslider.js +1 -1
- data/assets/themes/j1/modules/scroller/js/scroller.js +64 -74
- data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
- data/assets/themes/j1/modules/slick/slider/css/theme/uno.css +4 -4
- data/assets/themes/j1/modules/slick/slider/css/theme/uno.min.css +1 -1
- data/assets/themes/j1/modules/slimSelect/js/select.js +1865 -1821
- data/assets/themes/j1/modules/slimSelect/js/select.min.js +2 -1
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +87 -89
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
- data/assets/themes/j1/modules/videojs/js/plugins/vm/api/player.min.js +5 -7
- data/assets/themes/j1/modules/videojs/js/plugins/vm/api/v2.20.1/player.min.js +23 -0
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +2 -2
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +1 -1
- data/lib/starter_web/_data/blocks/_panel.yml +775 -0
- data/lib/starter_web/_data/blocks/panel.yml +53 -53
- data/lib/starter_web/_data/j1_config.yml +3 -2
- data/lib/starter_web/_data/layouts/default.yml +0 -2
- data/lib/starter_web/_data/modules/_scroller.yml +102 -0
- data/lib/starter_web/_data/modules/carousel.yml +3 -3
- data/lib/starter_web/_data/modules/defaults/attics.yml +5 -5
- data/lib/starter_web/_data/modules/defaults/docsearch.yml +1 -1
- data/lib/starter_web/_data/modules/defaults/gemini.yml +204 -46
- data/lib/starter_web/_data/modules/defaults/{iconPicker.yml → icon_picker.yml} +6 -12
- data/lib/starter_web/_data/modules/defaults/lunr.yml +20 -5
- data/lib/starter_web/_data/modules/defaults/masterslider.yml +4 -4
- data/lib/starter_web/_data/modules/defaults/navigator.yml +20 -24
- data/lib/starter_web/_data/modules/defaults/particles.yml +3 -3
- data/lib/starter_web/_data/modules/defaults/slim_select.yml +54 -0
- data/lib/starter_web/_data/modules/defaults/{themer.yml → themes.yml} +10 -10
- data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
- data/lib/starter_web/_data/modules/gallery.yml +33 -38
- data/lib/starter_web/_data/modules/gemini.yml +42 -3
- data/lib/starter_web/_data/modules/{iconPicker.yml → icon_picker.yml} +31 -3
- data/lib/starter_web/_data/modules/lunr.yml +12 -1
- data/lib/starter_web/_data/modules/masonry.yml +37 -38
- data/lib/starter_web/_data/modules/masterslider.yml +78 -95
- data/lib/starter_web/_data/modules/navigator_menu.yml +12 -20
- data/lib/starter_web/_data/modules/particles.yml +3 -3
- data/lib/starter_web/_data/modules/scroller.yml +3 -3
- data/lib/starter_web/_data/modules/slim_select.yml +110 -0
- data/lib/starter_web/_data/modules/{themer.yml → themes.yml} +4 -4
- data/lib/starter_web/_data/resources.yml +83 -47
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_includes/attributes.asciidoc +354 -355
- data/lib/starter_web/_plugins/asciidoctor/gemini-ui-block.rb +1 -1
- data/lib/starter_web/_plugins/asciidoctor/slim-select-block.rb +45 -0
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +5 -2
- data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +3 -3
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +9 -9
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +4 -4
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -2
- data/lib/starter_web/collections/posts/public/featured/_posts/2023-10-18-url-types.adoc +12 -12
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/about/features.adoc +1 -1
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +44 -44
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +1 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/attributes.asciidoc +12 -12
- data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +1 -1
- data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/attributes.asciidoc +42 -28
- data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/highlghter_rouge.adoc +1 -0
- data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/lunr_search.adoc +1 -0
- data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/present_audio_video.adoc +18 -2
- data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/present_images.adoc +43 -50
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +6 -11
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +4 -11
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +5 -12
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +5 -10
- data/lib/starter_web/pages/public/tools/previewer/_includes/attributes.asciidoc +10 -9
- data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +77 -75
- metadata +52 -46
- data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/attributes.asciidoc +0 -47
- data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/documents/preview_google_adsense.asciidoc +0 -448
- data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/documents/readme +0 -0
- data/lib/starter_web/pages/public/manuals/integrations/gemini/_includes/tables/readme +0 -0
- data/lib/starter_web/pages/public/manuals/integrations/gemini/gemini.adoc +0 -525
- data/lib/starter_web/pages/public/manuals/integrations/gemini/security.asccidoc +0 -274
- data/lib/starter_web/pages/public/manuals/integrations/gemini/security.hrml +0 -560
- /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/article_previewer/viewer_biography.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/article_previewer/viewer_fantasy.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/article_previewer/viewer_romance.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/jekyll_collections.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/bookshelf/viewer_all_books.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/100_gistblock.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_central_success.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_top_info.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/themes_bootstrap.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/_includes/documents/themes_rouge.asciidoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/asciidoc_extensions.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/bootstrap_themes.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/icon_fonts.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/modal_extentions.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/responsive_tables.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/roundtrip/typography.adoc +0 -0
- /data/lib/starter_web/pages/public/{legal/learn → learn}/where_to_go.adoc +0 -0
@@ -1,560 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html lang="en">
|
3
|
-
|
4
|
-
<body>
|
5
|
-
<devsite-content>
|
6
|
-
<article class="devsite-article" has-bookmark="">
|
7
|
-
<style>
|
8
|
-
/* Styles inlined from /site-assets/css/style.css */
|
9
|
-
/* Ensure that full-bleed pages get the full width. */
|
10
|
-
body[theme="googledevai-theme"][layout="full"] .devsite-main-content {
|
11
|
-
max-width: none;
|
12
|
-
padding: 0;
|
13
|
-
}
|
14
|
-
/* And ensure that any site banners/ACL warnings/etc don't get hidden on
|
15
|
-
* full-bleed pages. */
|
16
|
-
body[theme="googledevai-theme"][layout="full"] .devsite-banner {
|
17
|
-
margin: 0;
|
18
|
-
}
|
19
|
-
tab:has(> a.hidden-tab) {
|
20
|
-
display: none;
|
21
|
-
}
|
22
|
-
.landing-page-card {
|
23
|
-
padding: 16px;
|
24
|
-
box-shadow: 0 0 36px rgba(0,0,0,0.1);
|
25
|
-
border-radius: 10px;
|
26
|
-
}
|
27
|
-
/* Page section headings */
|
28
|
-
.landing-page-heading h2, h2.landing-page-heading {
|
29
|
-
font-family: "Google Sans", sans-serif;
|
30
|
-
color: #425066;
|
31
|
-
font-size: 30px;
|
32
|
-
font-weight: 700;
|
33
|
-
line-height: 40px;
|
34
|
-
}
|
35
|
-
/* Item title headings */
|
36
|
-
.landing-page-heading h3, h3.landing-page-heading,
|
37
|
-
.landing-page-card h3, h3.landing-page-card {
|
38
|
-
font-family: "Google Sans", sans-serif;
|
39
|
-
color: #425066;
|
40
|
-
font-size: 20px;
|
41
|
-
font-weight: 500;
|
42
|
-
line-height: 26px;
|
43
|
-
}
|
44
|
-
/* Notebooks */
|
45
|
-
devsite-code .tfo-notebook-code-cell-output {
|
46
|
-
max-height: 300px;
|
47
|
-
overflow: auto;
|
48
|
-
background: rgba(237, 247, 255, 1); /* blue bg to distinguish from input code cells */
|
49
|
-
}
|
50
|
-
devsite-code .tfo-notebook-code-cell-output + .devsite-code-buttons-container button {
|
51
|
-
background: rgba(237, 247, 255, .7); /* blue bg to distinguish from input code cells */
|
52
|
-
}
|
53
|
-
devsite-code[dark-code] .tfo-notebook-code-cell-output {
|
54
|
-
background: rgba(64, 78, 103, 1); /* medium slate */
|
55
|
-
}
|
56
|
-
devsite-code[dark-code] .tfo-notebook-code-cell-output + .devsite-code-buttons-container button {
|
57
|
-
background: rgba(64, 78, 103, .7); /* medium slate */
|
58
|
-
}
|
59
|
-
/* override default table styles for notebook buttons */
|
60
|
-
.devsite-table-wrapper .tfo-notebook-buttons {
|
61
|
-
display: inline-block;
|
62
|
-
margin-left: 3px;
|
63
|
-
width: auto;
|
64
|
-
}
|
65
|
-
.tfo-notebook-buttons td {
|
66
|
-
padding-left: 0;
|
67
|
-
padding-right: 20px;
|
68
|
-
}
|
69
|
-
/* on rendered notebook page,
|
70
|
-
remove link to webpage since we're already here */
|
71
|
-
.tfo-notebook-buttons:not(.tfo-api) td:first-child {
|
72
|
-
display: none;
|
73
|
-
}
|
74
|
-
.tfo-notebook-buttons a,
|
75
|
-
.tfo-notebook-buttons :link,
|
76
|
-
.tfo-notebook-buttons :visited {
|
77
|
-
border-radius: 8px;
|
78
|
-
box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 1px 3px 1px rgba(60, 64, 67, .15);
|
79
|
-
color: #202124;
|
80
|
-
padding: 12px 17px;
|
81
|
-
transition: box-shadow 0.2s;
|
82
|
-
}
|
83
|
-
.tfo-notebook-buttons a:hover,
|
84
|
-
.tfo-notebook-buttons a:focus {
|
85
|
-
box-shadow: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 2px 6px 2px rgba(60, 64, 67, .15);
|
86
|
-
}
|
87
|
-
.tfo-notebook-buttons tr {
|
88
|
-
background: 0;
|
89
|
-
border: 0;
|
90
|
-
}
|
91
|
-
.tfo-notebook-buttons td > a {
|
92
|
-
-webkit-box-align: center;
|
93
|
-
-ms-flex-align: center;
|
94
|
-
align-items: center;
|
95
|
-
display: -webkit-box;
|
96
|
-
display: -ms-flexbox;
|
97
|
-
display: flex;
|
98
|
-
}
|
99
|
-
.tfo-notebook-buttons td > a > img {
|
100
|
-
margin-right: 8px;
|
101
|
-
}
|
102
|
-
</style>
|
103
|
-
<div class="devsite-article-meta nocontent" role="navigation">
|
104
|
-
<ul class="devsite-breadcrumb-list" aria-label="Breadcrumb">
|
105
|
-
<li class="devsite-breadcrumb-item
|
106
|
-
">
|
107
|
-
<a href="https://ai.google.dev/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google AI for Developers">
|
108
|
-
Google AI for Developers
|
109
|
-
</a>
|
110
|
-
</li>
|
111
|
-
<li class="devsite-breadcrumb-item
|
112
|
-
">
|
113
|
-
<div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div>
|
114
|
-
<a href="https://ai.google.dev/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="">
|
115
|
-
Products
|
116
|
-
</a>
|
117
|
-
</li>
|
118
|
-
</ul>
|
119
|
-
<devsite-thumb-rating position="header">
|
120
|
-
<div class="devsite-thumb-rating" role="form" aria-labelledby="devsite-thumb-label-header">
|
121
|
-
<div class="devsite-thumb-label" id="devsite-thumb-label-header">Was this helpful?</div>
|
122
|
-
<div class="devsite-thumbs">
|
123
|
-
<button class="devsite-thumb devsite-thumb-up" data-title="Helpful" aria-label="Helpful">
|
124
|
-
<svg class="devsite-thumb-icon" viewBox="0 0 24 24" aria-hidden="true">
|
125
|
-
<path d="M21,7h-6.31l0.95-4.57l0.03-0.32c0-0.41-0.17-0.79-0.44-1.06L14.17,0c0,0-7.09,6.85-7.17,7H2v13h16 c0.83,0,1.54-0.5,1.84-1.22l3.02-7.05C22.95,11.5,23,11.26,23,11V9C23,7.9,22.1,7,21,7z M7,18H4V9h3V18z M21,11l-3,7H9V8l4.34-4.34 L12,9h9V11z"></path>
|
126
|
-
</svg>
|
127
|
-
</button>
|
128
|
-
<button class="devsite-thumb devsite-thumb-down" data-title="Not helpful" aria-label="Not helpful">
|
129
|
-
<svg class="devsite-thumb-icon" viewBox="0 0 24 24" aria-hidden="true">
|
130
|
-
<path d="M3,17h6.31l-0.95,4.57l-0.03,0.32c0,0.41,0.17,0.79,0.44,1.06L9.83,24c0,0,7.09-6.85,7.17-7h5V4H6 C5.17,4,4.46,4.5,4.16,5.22l-3.02,7.05C1.05,12.5,1,12.74,1,13v2C1,16.1,1.9,17,3,17z M17,6h3v9h-3V6z M3,13l3-7h9v10l-4.34,4.34 L12,15H3V13z"></path>
|
131
|
-
</svg>
|
132
|
-
</button>
|
133
|
-
</div>
|
134
|
-
</div>
|
135
|
-
</devsite-thumb-rating>
|
136
|
-
</div>
|
137
|
-
<devsite-feedback position="header" project-name="Google AI for Developers" product-id="5292923" bucket="documentation" context="" version="t-devsite-webserver-20240220-r00-rc00.458658593551227362" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v937c5f592532c0ad2ebbf299686fcceed4f5934a648172aa45e00618ae0982d7/googledevai/images/touchicon-180-new.png" feedback-type="thumb-rating">
|
138
|
-
<button>
|
139
|
-
Send feedback
|
140
|
-
</button>
|
141
|
-
</devsite-feedback>
|
142
|
-
<h1 class="devsite-page-title" tabindex="-1">Safety settings</h1>
|
143
|
-
<devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent inline-block" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it" ready="" current-step="0" style="--devsite-popout-offset-x: 32px;">
|
144
|
-
<devsite-bookmark class="show">
|
145
|
-
<devsite-dropdown-list ellipsis="" checkboxes="" fetchingitems="true" writable="" additemtext="New Collection" ready="" style="--devsite-popout-offset-x: 0px;"><span data-label="devsite-bookmark-direct-action" data-title="Save page" class="material-icons bookmark-icon bookmark-action" slot="toggle">bookmark_border</span><span data-label="devsite-bookmark-direct-action" data-title="Unsave page" hidden="" class="material-icons bookmark-icon unbookmark-action toggled" slot="toggle">bookmark</span></devsite-dropdown-list>
|
146
|
-
</devsite-bookmark>
|
147
|
-
<span slot="popout-heading">
|
148
|
-
Stay organized with collections
|
149
|
-
</span>
|
150
|
-
<span slot="popout-contents">
|
151
|
-
Save and categorize content based on your preferences.
|
152
|
-
</span>
|
153
|
-
</devsite-feature-tooltip>
|
154
|
-
<div class="devsite-page-title-meta"></div>
|
155
|
-
<devsite-toc class="devsite-nav devsite-toc-embedded" depth="2" devsite-toc-embedded="" expandable="" visible="">
|
156
|
-
<ul class="devsite-nav-list">
|
157
|
-
<li class="devsite-nav-item devsite-nav-heading devsite-toc-toggle"><span class="devsite-nav-title" role="heading" aria-level="2"><span class="devsite-nav-text">On this page</span></span><button type="button" title="Expand/collapse contents" class="devsite-nav-show-all button-transparent material-icons"></button></li>
|
158
|
-
<li class="devsite-nav-item" visible="">
|
159
|
-
<a href="#safety-filters" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="0" track-type="navigation" track-name="embeddedNav" track-metadata-position="0" track-metadata-link-destination="#safety-filters"><span class="devsite-nav-text" tooltip="">Safety filters</span></a>
|
160
|
-
<ul class="devsite-nav-list">
|
161
|
-
<li class="devsite-nav-item" visible=""><a href="#probability-vs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="0.0" track-type="navigation" track-name="embeddedNav" track-metadata-position="0.0" track-metadata-link-destination="#probability-vs"><span class="devsite-nav-text" tooltip="">Probability versus severity</span></a></li>
|
162
|
-
<li class="devsite-nav-item" visible=""><a href="#safety-settings" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="0.1" track-type="navigation" track-name="embeddedNav" track-metadata-position="0.1" track-metadata-link-destination="#safety-settings"><span class="devsite-nav-text" tooltip="">Safety Settings</span></a></li>
|
163
|
-
<li class="devsite-nav-item" visible=""><a href="#safety-feedback" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="0.2" track-type="navigation" track-name="embeddedNav" track-metadata-position="0.2" track-metadata-link-destination="#safety-feedback"><span class="devsite-nav-text" tooltip="">Safety feedback</span></a></li>
|
164
|
-
</ul>
|
165
|
-
</li>
|
166
|
-
<li class="devsite-nav-item" visible=""><a href="#safety-settings-ai-studio" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="1" track-type="navigation" track-name="embeddedNav" track-metadata-position="1" track-metadata-link-destination="#safety-settings-ai-studio"><span class="devsite-nav-text" tooltip="">Safety settings in Google AI Studio</span></a></li>
|
167
|
-
<li class="devsite-nav-item" visible="">
|
168
|
-
<a href="#code-examples" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="2" track-type="navigation" track-name="embeddedNav" track-metadata-position="2" track-metadata-link-destination="#code-examples"><span class="devsite-nav-text" tooltip="">Code examples</span></a>
|
169
|
-
<ul class="devsite-nav-list">
|
170
|
-
<li class="devsite-nav-item" visible=""><a href="#request-example" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="2.0" track-type="navigation" track-name="embeddedNav" track-metadata-position="2.0" track-metadata-link-destination="#request-example"><span class="devsite-nav-text" tooltip="">Request example</span></a></li>
|
171
|
-
<li class="devsite-nav-item" visible=""><a href="#response-example" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="2.1" track-type="navigation" track-name="embeddedNav" track-metadata-position="2.1" track-metadata-link-destination="#response-example"><span class="devsite-nav-text" tooltip="">Response example</span></a></li>
|
172
|
-
</ul>
|
173
|
-
</li>
|
174
|
-
<li class="devsite-nav-item"><a href="#next-steps" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-action="click" data-label="Embedded nav" data-value="3" track-type="navigation" track-name="embeddedNav" track-metadata-position="3" track-metadata-link-destination="#next-steps"><span class="devsite-nav-text" tooltip="">Next steps</span></a></li>
|
175
|
-
<li class="devsite-toc-toggle"><button type="button" class="button-flat devsite-nav-more-items material-icons" track-type="navigation" track-name="embeddedNavExpand" title="Expand/collapse contents"></button></li>
|
176
|
-
</ul>
|
177
|
-
</devsite-toc>
|
178
|
-
<div class="devsite-article-body clearfix
|
179
|
-
">
|
180
|
-
<p></p>
|
181
|
-
<p>This guide describes the adjustable safety settings available for the Gemini
|
182
|
-
API. During the prototyping stage, you can adjust safety settings on 4
|
183
|
-
dimensions to quickly assess if your application requires more or less
|
184
|
-
restrictive configuration. By default, safety settings block content (including
|
185
|
-
prompts) with medium or higher probability of being unsafe across any dimension.
|
186
|
-
This baseline safety is designed to work for most use cases, so you should only
|
187
|
-
adjust your safety settings if it's consistently required for your application.
|
188
|
-
</p>
|
189
|
-
<aside class="note"><strong>Note:</strong><span> Adjusting to lower safety settings will trigger a more indepth review
|
190
|
-
process of your application.</span>
|
191
|
-
</aside>
|
192
|
-
<h2 id="safety-filters" data-text="Safety filters" tabindex="-1" role="presentation"><span class="devsite-heading" role="heading" aria-level="2">Safety filters</span><button type="button" class="devsite-heading-link button-flat material-icons" aria-label="Copy link to this section: Safety filters" data-title="Copy link to this section: Safety filters" data-id="safety-filters"></button></h2>
|
193
|
-
<p>In addition to the adjustable safety filters, the Gemini API has built-in
|
194
|
-
protections against core harms, such as content that endangers child safety.
|
195
|
-
These types of harm are always blocked and cannot be adjusted.
|
196
|
-
</p>
|
197
|
-
<p>The adjustable safety filters cover the following categories:</p>
|
198
|
-
<ul>
|
199
|
-
<li>Harassment</li>
|
200
|
-
<li>Hate speech</li>
|
201
|
-
<li>Sexually explicit</li>
|
202
|
-
<li>Dangerous</li>
|
203
|
-
</ul>
|
204
|
-
<p>These settings allow you, the developer, to determine what is appropriate for
|
205
|
-
your use case. For example, if you're building a video game dialogue, you may
|
206
|
-
deem it acceptable to allow more content that's rated as dangerous due to the
|
207
|
-
nature of the game. Here are a few other example use cases that may need some
|
208
|
-
flexibility in these safety settings:
|
209
|
-
</p>
|
210
|
-
<div class="devsite-table-wrapper">
|
211
|
-
<table>
|
212
|
-
<tbody>
|
213
|
-
<tr>
|
214
|
-
<th>Use Case
|
215
|
-
</th>
|
216
|
-
<th>Category
|
217
|
-
</th>
|
218
|
-
</tr>
|
219
|
-
<tr>
|
220
|
-
<td>Anti-Harassment Training App
|
221
|
-
</td>
|
222
|
-
<td>Hate speech, Sexually explicit
|
223
|
-
</td>
|
224
|
-
</tr>
|
225
|
-
<tr>
|
226
|
-
<td>Screenplay Writer
|
227
|
-
</td>
|
228
|
-
<td>Sexually explicit, Dangerous
|
229
|
-
</td>
|
230
|
-
</tr>
|
231
|
-
<tr>
|
232
|
-
<td>Toxicity classifier
|
233
|
-
</td>
|
234
|
-
<td>Harassment, Dangerous
|
235
|
-
</td>
|
236
|
-
</tr>
|
237
|
-
</tbody>
|
238
|
-
</table>
|
239
|
-
</div>
|
240
|
-
<h3 id="probability-vs" data-text="Probability versus severity" tabindex="-1" role="presentation"><span class="devsite-heading" role="heading" aria-level="3">Probability versus severity</span><button type="button" class="devsite-heading-link button-flat material-icons" aria-label="Copy link to this section: Probability versus severity" data-title="Copy link to this section: Probability versus severity" data-id="probability-vs"></button></h3>
|
241
|
-
<p>The Gemini API blocks content based on the <strong>probability</strong> of content being
|
242
|
-
unsafe and <strong>not</strong> the severity. This is important to consider because some
|
243
|
-
content can have low probability of being unsafe even though the severity of
|
244
|
-
harm could still be high. For example, comparing the sentences:
|
245
|
-
</p>
|
246
|
-
<ol>
|
247
|
-
<li>The robot punched me.</li>
|
248
|
-
<li>The robot slashed me up.</li>
|
249
|
-
</ol>
|
250
|
-
<p>Sentence 1 might result in a higher probability of being unsafe but you might
|
251
|
-
consider sentence 2 to be a higher severity in terms of violence.
|
252
|
-
</p>
|
253
|
-
<p>Given this, it is important for each developer to carefully test and consider
|
254
|
-
what the appropriate level of blocking is needed to support their key use cases
|
255
|
-
while minimizing harm to end users.
|
256
|
-
</p>
|
257
|
-
<h3 id="safety-settings" data-text="Safety Settings" tabindex="-1" role="presentation"><span class="devsite-heading" role="heading" aria-level="3">Safety Settings</span><button type="button" class="devsite-heading-link button-flat material-icons" aria-label="Copy link to this section: Safety Settings" data-title="Copy link to this section: Safety Settings" data-id="safety-settings"></button></h3>
|
258
|
-
<p>Safety settings are part of the request you send to the text service. It can be
|
259
|
-
adjusted for each request you make to the API. The following table lists the
|
260
|
-
categories that you can set and describes the type of harm that each category
|
261
|
-
encompasses.
|
262
|
-
</p>
|
263
|
-
<div class="devsite-table-wrapper">
|
264
|
-
<table>
|
265
|
-
<tbody>
|
266
|
-
<tr>
|
267
|
-
<th>Categories
|
268
|
-
</th>
|
269
|
-
<th>Descriptions
|
270
|
-
</th>
|
271
|
-
</tr>
|
272
|
-
<tr>
|
273
|
-
<td>Harassment
|
274
|
-
</td>
|
275
|
-
<td>Negative or harmful comments targeting identity and/or protected attributes.
|
276
|
-
</td>
|
277
|
-
</tr>
|
278
|
-
<tr>
|
279
|
-
<td>Hate speech
|
280
|
-
</td>
|
281
|
-
<td>Content that is rude, disrespectful, or profane.
|
282
|
-
</td>
|
283
|
-
</tr>
|
284
|
-
<tr>
|
285
|
-
<td>Sexually explicit
|
286
|
-
</td>
|
287
|
-
<td>Contains references to sexual acts or other lewd content.
|
288
|
-
</td>
|
289
|
-
</tr>
|
290
|
-
<tr>
|
291
|
-
<td>Dangerous
|
292
|
-
</td>
|
293
|
-
<td>Promotes, facilitates, or encourages harmful acts.
|
294
|
-
</td>
|
295
|
-
</tr>
|
296
|
-
</tbody>
|
297
|
-
</table>
|
298
|
-
</div>
|
299
|
-
<p>These definitions are in the <a href="https://ai.google.dev/api/rest/v1/HarmCategory">API reference</a> as
|
300
|
-
well. The Gemini models only support <code translate="no" dir="ltr">HARM_CATEGORY_HARASSMENT</code>,
|
301
|
-
<code translate="no" dir="ltr">HARM_CATEGORY_HATE_SPEECH</code>, <code translate="no" dir="ltr">HARM_CATEGORY_SEXUALLY_EXPLICIT</code>, and
|
302
|
-
<code translate="no" dir="ltr">HARM_CATEGORY_DANGEROUS_CONTENT</code>. The other categories are used by PaLM 2
|
303
|
-
(Legacy) models.
|
304
|
-
</p>
|
305
|
-
<p>The following table describes the block settings you can adjust for each
|
306
|
-
category. For example, if you set the block setting to <strong>Block few</strong> for the
|
307
|
-
<strong>Hate speech</strong> category, everything that has a high probability of being hate
|
308
|
-
speech content is blocked. But anything with a lower probability is allowed.
|
309
|
-
</p>
|
310
|
-
<p>If not set, the default block setting is <strong>Block some</strong> for all categories.</p>
|
311
|
-
<div class="devsite-table-wrapper">
|
312
|
-
<table>
|
313
|
-
<tbody>
|
314
|
-
<tr>
|
315
|
-
<th>Threshold (Google AI Studio)
|
316
|
-
</th>
|
317
|
-
<th>Threshold (API)
|
318
|
-
</th>
|
319
|
-
<th>Description
|
320
|
-
</th>
|
321
|
-
</tr>
|
322
|
-
<tr>
|
323
|
-
<td>Block none
|
324
|
-
</td>
|
325
|
-
<td>BLOCK_NONE
|
326
|
-
</td>
|
327
|
-
<td>Always show regardless of probability of unsafe content
|
328
|
-
</td>
|
329
|
-
</tr>
|
330
|
-
<tr>
|
331
|
-
<td>Block few
|
332
|
-
</td>
|
333
|
-
<td>BLOCK_ONLY_HIGH
|
334
|
-
</td>
|
335
|
-
<td>Block when high probability of unsafe content
|
336
|
-
</td>
|
337
|
-
</tr>
|
338
|
-
<tr>
|
339
|
-
<td>Block some
|
340
|
-
</td>
|
341
|
-
<td>BLOCK_MEDIUM_AND_ABOVE
|
342
|
-
</td>
|
343
|
-
<td>Block when medium or high probability of unsafe content
|
344
|
-
</td>
|
345
|
-
</tr>
|
346
|
-
<tr>
|
347
|
-
<td>Block most
|
348
|
-
</td>
|
349
|
-
<td>BLOCK_LOW_AND_ABOVE
|
350
|
-
</td>
|
351
|
-
<td>Block when low, medium or high probability of unsafe content
|
352
|
-
</td>
|
353
|
-
</tr>
|
354
|
-
<tr>
|
355
|
-
<td>
|
356
|
-
</td>
|
357
|
-
<td>HARM_BLOCK_THRESHOLD_UNSPECIFIED
|
358
|
-
</td>
|
359
|
-
<td>Threshold is unspecified, block using default threshold
|
360
|
-
</td>
|
361
|
-
</tr>
|
362
|
-
</tbody>
|
363
|
-
</table>
|
364
|
-
</div>
|
365
|
-
<p>You can set these settings for each request you make to the text service. See
|
366
|
-
the <a href="https://ai.google.dev/api/rest/v1/SafetySetting#harmblockthreshold"><code translate="no" dir="ltr">HarmBlockThreshold</code></a>
|
367
|
-
API reference for details.
|
368
|
-
</p>
|
369
|
-
<h3 id="safety-feedback" data-text="Safety feedback" tabindex="-1" role="presentation"><span class="devsite-heading" role="heading" aria-level="3">Safety feedback</span><button type="button" class="devsite-heading-link button-flat material-icons" aria-label="Copy link to this section: Safety feedback" data-title="Copy link to this section: Safety feedback" data-id="safety-feedback"></button></h3>
|
370
|
-
<p><a href="https://ai.google.dev/api/rest/v1/models/generateContent"><code translate="no" dir="ltr">generateContent</code></a> returns a
|
371
|
-
<a href="https://ai.google.dev/api/rest/v1/GenerateContentResponse"><code translate="no" dir="ltr">GenerateContentResponse</code></a> which
|
372
|
-
includes safety feedback.
|
373
|
-
</p>
|
374
|
-
<p>Prompt feedback is included in
|
375
|
-
<a href="https://ai.google.dev/api/rest/v1/GenerateContentResponse#PromptFeedback"><code translate="no" dir="ltr">promptFeedback</code></a>.
|
376
|
-
If
|
377
|
-
<a href="https://ai.google.dev/api/rest/v1/GenerateContentResponse#blockreason"><code translate="no" dir="ltr">promptFeedback.blockReason</code></a>
|
378
|
-
is set, then the content of the prompt was blocked.
|
379
|
-
</p>
|
380
|
-
<p>Response candidate feedback is included in
|
381
|
-
<a href="https://ai.google.dev/api/rest/v1/GenerateContentResponse#FinishReason"><code translate="no" dir="ltr">finishReason</code></a> and
|
382
|
-
<a href="https://ai.google.dev/api/rest/v1/GenerateContentResponse#safetyrating"><code translate="no" dir="ltr">safetyRatings</code></a>. If
|
383
|
-
response content was blocked and the <code translate="no" dir="ltr">finishReason</code> was <code translate="no" dir="ltr">SAFETY</code>, you can
|
384
|
-
inspect <code translate="no" dir="ltr">safetyRatings</code> for more details. The safety rating includes the
|
385
|
-
category and the probability of the harm classification. The content that was
|
386
|
-
blocked is not returned.
|
387
|
-
</p>
|
388
|
-
<p>The probability returned correspond to the block confidence levels as shown in
|
389
|
-
the following table:
|
390
|
-
</p>
|
391
|
-
<div class="devsite-table-wrapper">
|
392
|
-
<table>
|
393
|
-
<tbody>
|
394
|
-
<tr>
|
395
|
-
<th>Probability
|
396
|
-
</th>
|
397
|
-
<th>Description
|
398
|
-
</th>
|
399
|
-
</tr>
|
400
|
-
<tr>
|
401
|
-
<td>NEGLIGIBLE
|
402
|
-
</td>
|
403
|
-
<td>Content has a negligible probability of being unsafe
|
404
|
-
</td>
|
405
|
-
</tr>
|
406
|
-
<tr>
|
407
|
-
<td>LOW
|
408
|
-
</td>
|
409
|
-
<td>Content has a low probability of being unsafe
|
410
|
-
</td>
|
411
|
-
</tr>
|
412
|
-
<tr>
|
413
|
-
<td>MEDIUM
|
414
|
-
</td>
|
415
|
-
<td>Content has a medium probability of being unsafe
|
416
|
-
</td>
|
417
|
-
</tr>
|
418
|
-
<tr>
|
419
|
-
<td>HIGH
|
420
|
-
</td>
|
421
|
-
<td>Content has a high probability of being unsafe
|
422
|
-
</td>
|
423
|
-
</tr>
|
424
|
-
</tbody>
|
425
|
-
</table>
|
426
|
-
</div>
|
427
|
-
<p>For example, if the content was blocked due to the harassment category having a
|
428
|
-
high probability, the safety rating returned would have category equal to
|
429
|
-
<code translate="no" dir="ltr">HARASSMENT</code> and harm probability set to <code translate="no" dir="ltr">HIGH</code>.
|
430
|
-
</p>
|
431
|
-
<h2 id="safety-settings-ai-studio" data-text="Safety settings in Google AI Studio" tabindex="-1">Safety settings in Google AI Studio</h2>
|
432
|
-
<p>You can also adjust safety settings in Google AI Studio, but you cannot turn
|
433
|
-
them off. To do so, in the <strong>Run settings</strong>, click <strong>Edit safety settings</strong>:
|
434
|
-
</p>
|
435
|
-
<p><img src="/static/docs/images/safety_settings_button.png" width="50%" class="screenshot" alt="Safety settings button"></p>
|
436
|
-
<p>And use the knobs to adjust each setting:</p>
|
437
|
-
<p><img src="/static/docs/images/safety_settings_ui.png" width="50%" class="screenshot" alt="Safety settings button"></p>
|
438
|
-
<p>A <span class="material-icons" aria-hidden="true" translate="no">warning</span> <strong>No Content</strong> message appears if
|
439
|
-
the content is blocked. To see more details, hold the pointer over <strong>No
|
440
|
-
Content</strong> and click <span class="material-icons" aria-hidden="true" translate="no">warning</span>
|
441
|
-
<strong>Safety</strong>.
|
442
|
-
</p>
|
443
|
-
<h2 id="code-examples" data-text="Code examples" tabindex="-1">Code examples</h2>
|
444
|
-
<p>This section shows how to use the safety settings in code using the python
|
445
|
-
client library.
|
446
|
-
</p>
|
447
|
-
<h3 id="request-example" data-text="Request example" tabindex="-1">Request example</h3>
|
448
|
-
<p>The following is a python code snippet showing how to set safety settings in
|
449
|
-
your <code translate="no" dir="ltr">GenerateContent</code> call. This sets the harm categories <code translate="no" dir="ltr">Harassment</code> and
|
450
|
-
<code translate="no" dir="ltr">Hate speech</code> to <code translate="no" dir="ltr">BLOCK_LOW_AND_ABOVE</code> which blocks any content that has a low
|
451
|
-
or higher probability of being harassment or hate speech.
|
452
|
-
</p>
|
453
|
-
<devsite-code data-copy-event-label="">
|
454
|
-
<pre class="lang-python" translate="no" dir="ltr" is-upgraded=""><code translate="no" dir="ltr"><span class="kwd">from</span><span class="pln"> google</span><span class="pun">.</span><span class="pln">generativeai</span><span class="pun">.</span><span class="pln">types </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">HarmCategory</span><span class="pun">,</span><span class="pln"> </span><span class="typ">HarmBlockThreshold</span><span class="pln"><br><br>model </span><span class="pun">=</span><span class="pln"> genai</span><span class="pun">.</span><span class="typ">GenerativeModel</span><span class="pun">(</span><span class="pln">model_name</span><span class="pun">=</span><span class="str">'gemini-pro-vision'</span><span class="pun">)</span><span class="pln"><br>response </span><span class="pun">=</span><span class="pln"> model</span><span class="pun">.</span><span class="pln">generate_content</span><span class="pun">(</span><span class="pln"><br> </span><span class="pun">[</span><span class="str">'Do these look store-bought or homemade?'</span><span class="pun">,</span><span class="pln"> img</span><span class="pun">],</span><span class="pln"><br> safety_settings</span><span class="pun">={</span><span class="pln"><br> </span><span class="typ">HarmCategory</span><span class="pun">.</span><span class="pln">HARM_CATEGORY_HATE_SPEECH</span><span class="pun">:</span><span class="pln"> </span><span class="typ">HarmBlockThreshold</span><span class="pun">.</span><span class="pln">BLOCK_LOW_AND_ABOVE</span><span class="pun">,</span><span class="pln"><br> </span><span class="typ">HarmCategory</span><span class="pun">.</span><span class="pln">HARM_CATEGORY_HARASSMENT</span><span class="pun">:</span><span class="pln"> </span><span class="typ">HarmBlockThreshold</span><span class="pun">.</span><span class="pln">BLOCK_LOW_AND_ABOVE</span><span class="pun">,</span><span class="pln"><br> </span><span class="pun">}</span><span class="pln"><br></span><span class="pun">)</span><span class="pln"><br></span></code></pre>
|
455
|
-
</devsite-code>
|
456
|
-
<h3 id="response-example" data-text="Response example" tabindex="-1">Response example</h3>
|
457
|
-
<p>The following shows a code snippet for parsing the safety feedback from the
|
458
|
-
response.
|
459
|
-
</p>
|
460
|
-
<devsite-code data-copy-event-label="">
|
461
|
-
<pre class="lang-python" translate="no" dir="ltr" is-upgraded=""><code translate="no" dir="ltr"><span class="kwd">try</span><span class="pun">:</span><span class="pln"><br> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">response</span><span class="pun">.</span><span class="pln">text</span><span class="pun">)</span><span class="pln"><br></span><span class="kwd">except</span><span class="pln"> </span><span class="typ">ValueError</span><span class="pun">:</span><span class="pln"><br> </span><span class="com"># If the response doesn't contain text, check if the prompt was blocked.</span><span class="pln"><br> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">response</span><span class="pun">.</span><span class="pln">prompt_feedback</span><span class="pun">)</span><span class="pln"><br> </span><span class="com"># Also check the finish reason to see if the response was blocked.</span><span class="pln"><br> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">response</span><span class="pun">.</span><span class="pln">candidates</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">finish_reason</span><span class="pun">)</span><span class="pln"><br> </span><span class="com"># If the finish reason was SAFETY, the safety ratings have more details.</span><span class="pln"><br> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">response</span><span class="pun">.</span><span class="pln">candidates</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">safety_ratings</span><span class="pun">)</span><span class="pln"><br></span></code></pre>
|
462
|
-
</devsite-code>
|
463
|
-
<h2 id="next-steps" data-text="Next steps" tabindex="-1">Next steps</h2>
|
464
|
-
<ul>
|
465
|
-
<li>See the <a href="https://ai.google.dev/api/">API reference</a> to learn more about the full API.</li>
|
466
|
-
<li>Review the <a href="/docs/safety_guidance">safety guidance</a> for a general look at safety
|
467
|
-
considerations when developing with LLMs.
|
468
|
-
</li>
|
469
|
-
<li>Learn more about assessing probability versus severity from the <a href="https://developers.perspectiveapi.com/s/about-the-api-score" class="external">Jigsaw
|
470
|
-
team</a>
|
471
|
-
</li>
|
472
|
-
<li>Learn more about the products that contribute to safety solutions like the
|
473
|
-
<a href="https://medium.com/jigsaw/reducing-toxicity-in-large-language-models-with-perspective-api-c31c39b7a4d7" class="external">Perspective
|
474
|
-
API</a>.
|
475
|
-
</li>
|
476
|
-
<li>You can use these safety settings to create a toxicity classifier. See the
|
477
|
-
<a href="https://ai.google.dev/examples/train_text_classifier_embeddings">classification example</a> to
|
478
|
-
get started.
|
479
|
-
</li>
|
480
|
-
</ul>
|
481
|
-
</div>
|
482
|
-
<devsite-thumb-rating position="footer">
|
483
|
-
<div class="devsite-thumb-rating" role="form" aria-labelledby="devsite-thumb-label-footer">
|
484
|
-
<div class="devsite-thumb-label" id="devsite-thumb-label-footer">Was this helpful?</div>
|
485
|
-
<div class="devsite-thumbs">
|
486
|
-
<button class="devsite-thumb devsite-thumb-up" data-title="Helpful" aria-label="Helpful">
|
487
|
-
<svg class="devsite-thumb-icon" viewBox="0 0 24 24" aria-hidden="true">
|
488
|
-
<path d="M21,7h-6.31l0.95-4.57l0.03-0.32c0-0.41-0.17-0.79-0.44-1.06L14.17,0c0,0-7.09,6.85-7.17,7H2v13h16 c0.83,0,1.54-0.5,1.84-1.22l3.02-7.05C22.95,11.5,23,11.26,23,11V9C23,7.9,22.1,7,21,7z M7,18H4V9h3V18z M21,11l-3,7H9V8l4.34-4.34 L12,9h9V11z"></path>
|
489
|
-
</svg>
|
490
|
-
</button>
|
491
|
-
<button class="devsite-thumb devsite-thumb-down" data-title="Not helpful" aria-label="Not helpful">
|
492
|
-
<svg class="devsite-thumb-icon" viewBox="0 0 24 24" aria-hidden="true">
|
493
|
-
<path d="M3,17h6.31l-0.95,4.57l-0.03,0.32c0,0.41,0.17,0.79,0.44,1.06L9.83,24c0,0,7.09-6.85,7.17-7h5V4H6 C5.17,4,4.46,4.5,4.16,5.22l-3.02,7.05C1.05,12.5,1,12.74,1,13v2C1,16.1,1.9,17,3,17z M17,6h3v9h-3V6z M3,13l3-7h9v10l-4.34,4.34 L12,15H3V13z"></path>
|
494
|
-
</svg>
|
495
|
-
</button>
|
496
|
-
</div>
|
497
|
-
</div>
|
498
|
-
</devsite-thumb-rating>
|
499
|
-
<devsite-feedback position="footer" project-name="Google AI for Developers" product-id="5292923" bucket="documentation" context="" version="t-devsite-webserver-20240220-r00-rc00.458658593551227362" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v937c5f592532c0ad2ebbf299686fcceed4f5934a648172aa45e00618ae0982d7/googledevai/images/touchicon-180-new.png" feedback-type="thumb-rating">
|
500
|
-
<button>
|
501
|
-
Send feedback
|
502
|
-
</button>
|
503
|
-
</devsite-feedback>
|
504
|
-
</article>
|
505
|
-
<devsite-content-footer class="nocontent">
|
506
|
-
<p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p>
|
507
|
-
<p>Last updated 2024-02-08 UTC.</p>
|
508
|
-
</devsite-content-footer>
|
509
|
-
<devsite-notification></devsite-notification>
|
510
|
-
<div class="devsite-content-data">
|
511
|
-
<template class="devsite-thumb-rating-down-categories">
|
512
|
-
[{
|
513
|
-
"type": "thumb-down",
|
514
|
-
"id": "missingTheInformationINeed",
|
515
|
-
"label":"Missing the information I need"
|
516
|
-
},{
|
517
|
-
"type": "thumb-down",
|
518
|
-
"id": "tooComplicatedTooManySteps",
|
519
|
-
"label":"Too complicated / too many steps"
|
520
|
-
},{
|
521
|
-
"type": "thumb-down",
|
522
|
-
"id": "outOfDate",
|
523
|
-
"label":"Out of date"
|
524
|
-
},{
|
525
|
-
"type": "thumb-down",
|
526
|
-
"id": "samplesCodeIssue",
|
527
|
-
"label":"Samples / code issue"
|
528
|
-
},{
|
529
|
-
"type": "thumb-down",
|
530
|
-
"id": "otherDown",
|
531
|
-
"label":"Other"
|
532
|
-
}]
|
533
|
-
</template>
|
534
|
-
<template class="devsite-thumb-rating-up-categories">
|
535
|
-
[{
|
536
|
-
"type": "thumb-up",
|
537
|
-
"id": "easyToUnderstand",
|
538
|
-
"label":"Easy to understand"
|
539
|
-
},{
|
540
|
-
"type": "thumb-up",
|
541
|
-
"id": "solvedMyProblem",
|
542
|
-
"label":"Solved my problem"
|
543
|
-
},{
|
544
|
-
"type": "thumb-up",
|
545
|
-
"id": "otherUp",
|
546
|
-
"label":"Other"
|
547
|
-
}]
|
548
|
-
</template>
|
549
|
-
<template class="devsite-thumb-rating-feedback">
|
550
|
-
<devsite-feedback position="thumb-rating" project-name="Google AI for Developers" product-id="5292923" bucket="documentation" context="" version="t-devsite-webserver-20240220-r00-rc00.458658593551227362" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-icon="https://www.gstatic.com/devrel-devsite/prod/v937c5f592532c0ad2ebbf299686fcceed4f5934a648172aa45e00618ae0982d7/googledevai/images/touchicon-180-new.png" feedback-type="thumb-rating">
|
551
|
-
<button>
|
552
|
-
Need to tell us more?
|
553
|
-
</button>
|
554
|
-
</devsite-feedback>
|
555
|
-
</template>
|
556
|
-
</div>
|
557
|
-
</devsite-content>
|
558
|
-
</body>
|
559
|
-
|
560
|
-
</html>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|