From 35a4af3a0741a62e89c657fd81a8ddd48bc312a9 Mon Sep 17 00:00:00 2001 From: Shilpa Kancharla Date: Thu, 27 Jun 2024 16:30:58 -0700 Subject: [PATCH 1/3] Add samples for chat --- samples/chat.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 samples/chat.py diff --git a/samples/chat.py b/samples/chat.py new file mode 100644 index 000000000..2c1c6e038 --- /dev/null +++ b/samples/chat.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from absl.testing import absltest + +import google.generativeai as genai +import pathlib + +media = pathlib.Path(__file__).parents[1] / "third_party" + +class UnitTests(absltest.TestCase): + def test_chat(self): + # [START chat] + model = genai.GenerativeModel("gemini-1.5-flash") + chat = model.start_chat( + history=[ + {"role": "user", "parts": "Hello, I have 2 dogs in my house."}, + {"role": "model", "parts": "Great to meet you. What would you like to know?"}, + ] + ) + response = chat.send_message("How many paws are in my house?") + print(response.text) + # [END chat] + + def test_chat_streaming(self): + # [START chat_streaming] + model = genai.GenerativeModel("gemini-1.5-flash") + chat = model.start_chat( + history=[ + {"role": "user", "parts": "Hello, I have 2 dogs in my house."}, + {"role": "model", "parts": "Great to meet you. What would you like to know?"}, + ] + ) + response = chat.send_message("How many paws are in my house?", stream=True) + for chunk in response: + print(chunk.text) + print("_"*80) + # [END chat_streaming] + + def test_chat_streaming_with_images(self): + # [START chat_streaming_with_images] + model = genai.GenerativeModel("gemini-1.5-flash") + chat = model.start_chat( + history=[ + {"role": "user", "parts": "Hello, I'm interested in learning about musical instruments. Can I show you one?"}, + {"role": "model", "parts": "Absolutely! What would you like to know?"}, + ] + ) + organ = genai.upload_file(media / "organ.jpg") + response = chat.send_message(["What family of intruments does this instrument belong to?", organ], stream=True) + # [END chat_streaming_with_images] + +if __name__ == "__main__": + absltest.main() \ No newline at end of file From 328ceee2128adbe48a0befc5538cb6ced7c35051 Mon Sep 17 00:00:00 2001 From: Shilpa Kancharla Date: Fri, 28 Jun 2024 15:46:04 -0700 Subject: [PATCH 2/3] Update chat sample to be more than one round --- samples/chat.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/samples/chat.py b/samples/chat.py index 2c1c6e038..85bfbba82 100644 --- a/samples/chat.py +++ b/samples/chat.py @@ -19,6 +19,7 @@ media = pathlib.Path(__file__).parents[1] / "third_party" + class UnitTests(absltest.TestCase): def test_chat(self): # [START chat] @@ -45,7 +46,7 @@ def test_chat_streaming(self): response = chat.send_message("How many paws are in my house?", stream=True) for chunk in response: print(chunk.text) - print("_"*80) + print("_" * 80) # [END chat_streaming] def test_chat_streaming_with_images(self): @@ -53,13 +54,24 @@ def test_chat_streaming_with_images(self): model = genai.GenerativeModel("gemini-1.5-flash") chat = model.start_chat( history=[ - {"role": "user", "parts": "Hello, I'm interested in learning about musical instruments. Can I show you one?"}, + { + "role": "user", + "parts": "Hello, I'm interested in learning about musical instruments. Can I show you one?", + }, {"role": "model", "parts": "Absolutely! What would you like to know?"}, + {"role": "user", "parts": "Can you name the instrument?"}, + {"role": "model", "parts": "It's an organ. What else do you want to know?"}, ] ) organ = genai.upload_file(media / "organ.jpg") - response = chat.send_message(["What family of intruments does this instrument belong to?", organ], stream=True) + response = chat.send_message( + ["What family of intruments does this instrument belong to?", organ], stream=True + ) + for chunk in response: + print(chunk.text) + print("_" * 80) # [END chat_streaming_with_images] + if __name__ == "__main__": - absltest.main() \ No newline at end of file + absltest.main() From 2a6617a2fb09e9aabcc1108e341eea3b23b265d4 Mon Sep 17 00:00:00 2001 From: Mark Daoust Date: Fri, 28 Jun 2024 16:25:46 -0700 Subject: [PATCH 3/3] multiple send_message calls. --- samples/chat.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/samples/chat.py b/samples/chat.py index 85bfbba82..5958979cc 100644 --- a/samples/chat.py +++ b/samples/chat.py @@ -26,10 +26,12 @@ def test_chat(self): model = genai.GenerativeModel("gemini-1.5-flash") chat = model.start_chat( history=[ - {"role": "user", "parts": "Hello, I have 2 dogs in my house."}, + {"role": "user", "parts": "Hello"}, {"role": "model", "parts": "Great to meet you. What would you like to know?"}, ] ) + response = chat.send_message("I have 2 dogs in my house.") + print(response.text) response = chat.send_message("How many paws are in my house?") print(response.text) # [END chat] @@ -39,30 +41,32 @@ def test_chat_streaming(self): model = genai.GenerativeModel("gemini-1.5-flash") chat = model.start_chat( history=[ - {"role": "user", "parts": "Hello, I have 2 dogs in my house."}, + {"role": "user", "parts": "Hello"}, {"role": "model", "parts": "Great to meet you. What would you like to know?"}, ] ) + response = chat.send_message("I have 2 dogs in my house.", stream=True) + for chunk in response: + print(chunk.text) + print("_" * 80) response = chat.send_message("How many paws are in my house?", stream=True) for chunk in response: print(chunk.text) print("_" * 80) + + print(chat.history) # [END chat_streaming] def test_chat_streaming_with_images(self): # [START chat_streaming_with_images] model = genai.GenerativeModel("gemini-1.5-flash") - chat = model.start_chat( - history=[ - { - "role": "user", - "parts": "Hello, I'm interested in learning about musical instruments. Can I show you one?", - }, - {"role": "model", "parts": "Absolutely! What would you like to know?"}, - {"role": "user", "parts": "Can you name the instrument?"}, - {"role": "model", "parts": "It's an organ. What else do you want to know?"}, - ] - ) + chat = model.start_chat() + + response = chat.send_message("Hello, I'm interested in learning about musical instruments. Can I show you one?", stream=True) + for chunk in response: + print(chunk.text) # Yes. + print("_" * 80) + organ = genai.upload_file(media / "organ.jpg") response = chat.send_message( ["What family of intruments does this instrument belong to?", organ], stream=True