Bharathsekhar commited on
Commit
777d251
Β·
verified Β·
1 Parent(s): 4995b63

Upload 3 files

Browse files
Files changed (3) hide show
  1. .env +1 -0
  2. gemini_test.ipynb +139 -0
  3. streamlit_gemini_langchain.py +52 -0
.env ADDED
@@ -0,0 +1 @@
 
 
1
+ GEMINI_API_KEY=AIzaSyA2WApH-qFk1hetH3wmpT1pR6J0OOm3U3c
gemini_test.ipynb ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stderr",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "c:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
13
+ " from .autonotebook import tqdm as notebook_tqdm\n"
14
+ ]
15
+ },
16
+ {
17
+ "name": "stdout",
18
+ "output_type": "stream",
19
+ "text": [
20
+ "models/chat-bison-001\n",
21
+ "models/text-bison-001\n",
22
+ "models/embedding-gecko-001\n",
23
+ "models/gemini-1.0-pro-vision-latest\n",
24
+ "models/gemini-pro-vision\n",
25
+ "models/gemini-1.5-pro-latest\n",
26
+ "models/gemini-1.5-pro-001\n",
27
+ "models/gemini-1.5-pro-002\n",
28
+ "models/gemini-1.5-pro\n",
29
+ "models/gemini-1.5-flash-latest\n",
30
+ "models/gemini-1.5-flash-001\n",
31
+ "models/gemini-1.5-flash-001-tuning\n",
32
+ "models/gemini-1.5-flash\n",
33
+ "models/gemini-1.5-flash-002\n",
34
+ "models/gemini-1.5-flash-8b\n",
35
+ "models/gemini-1.5-flash-8b-001\n",
36
+ "models/gemini-1.5-flash-8b-latest\n",
37
+ "models/gemini-1.5-flash-8b-exp-0827\n",
38
+ "models/gemini-1.5-flash-8b-exp-0924\n",
39
+ "models/gemini-2.0-flash-exp\n",
40
+ "models/gemini-2.0-flash\n",
41
+ "models/gemini-2.0-flash-001\n",
42
+ "models/gemini-2.0-flash-lite-001\n",
43
+ "models/gemini-2.0-flash-lite\n",
44
+ "models/gemini-2.0-flash-lite-preview-02-05\n",
45
+ "models/gemini-2.0-flash-lite-preview\n",
46
+ "models/gemini-2.0-pro-exp\n",
47
+ "models/gemini-2.0-pro-exp-02-05\n",
48
+ "models/gemini-exp-1206\n",
49
+ "models/gemini-2.0-flash-thinking-exp-01-21\n",
50
+ "models/gemini-2.0-flash-thinking-exp\n",
51
+ "models/gemini-2.0-flash-thinking-exp-1219\n",
52
+ "models/learnlm-1.5-pro-experimental\n",
53
+ "models/gemma-3-27b-it\n",
54
+ "models/embedding-001\n",
55
+ "models/text-embedding-004\n",
56
+ "models/gemini-embedding-exp-03-07\n",
57
+ "models/gemini-embedding-exp\n",
58
+ "models/aqa\n",
59
+ "models/imagen-3.0-generate-002\n"
60
+ ]
61
+ }
62
+ ],
63
+ "source": [
64
+ "from langchain_google_genai import ChatGoogleGenerativeAI\n",
65
+ "import google.generativeai as genai\n",
66
+ "import os\n",
67
+ "\n",
68
+ "os.environ[\"GEMINI_API_KEY\"] = \"AIzaSyA2WApH-qFk1hetH3wmpT1pR6J0OOm3U3c\"\n",
69
+ "\n",
70
+ "# List all available models\n",
71
+ "models = genai.list_models()\n",
72
+ "\n",
73
+ "for model in models:\n",
74
+ " print(model.name)\n"
75
+ ]
76
+ },
77
+ {
78
+ "cell_type": "code",
79
+ "execution_count": 2,
80
+ "metadata": {},
81
+ "outputs": [
82
+ {
83
+ "ename": "DefaultCredentialsError",
84
+ "evalue": "Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.",
85
+ "output_type": "error",
86
+ "traceback": [
87
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
88
+ "\u001b[31mDefaultCredentialsError\u001b[39m Traceback (most recent call last)",
89
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 8\u001b[39m\n\u001b[32m 5\u001b[39m os.environ[\u001b[33m\"\u001b[39m\u001b[33mGEMINI_API_KEY\u001b[39m\u001b[33m\"\u001b[39m] = \u001b[33m\"\u001b[39m\u001b[33mAIzaSyA2WApH-qFk1hetH3wmpT1pR6J0OOm3U3c\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 7\u001b[39m \u001b[38;5;66;03m# Use the correct model name from the list\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m llm = \u001b[43mChatGoogleGenerativeAI\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mgemini-1.5-pro-latest\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 10\u001b[39m \u001b[38;5;66;03m# Test the model with a prompt\u001b[39;00m\n\u001b[32m 11\u001b[39m response = llm.invoke(\u001b[33m\"\u001b[39m\u001b[33mGenerate a marketing slogan for AI-powered advertising.\u001b[39m\u001b[33m\"\u001b[39m)\n",
90
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\langchain_core\\load\\serializable.py:125\u001b[39m, in \u001b[36mSerializable.__init__\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 123\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, *args: Any, **kwargs: Any) -> \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 124\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m125\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[34;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
91
+ " \u001b[31m[... skipping hidden 1 frame]\u001b[39m\n",
92
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\langchain_google_genai\\chat_models.py:853\u001b[39m, in \u001b[36mChatGoogleGenerativeAI.validate_environment\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 851\u001b[39m google_api_key = \u001b[38;5;28mself\u001b[39m.google_api_key\n\u001b[32m 852\u001b[39m transport: Optional[\u001b[38;5;28mstr\u001b[39m] = \u001b[38;5;28mself\u001b[39m.transport\n\u001b[32m--> \u001b[39m\u001b[32m853\u001b[39m \u001b[38;5;28mself\u001b[39m.client = \u001b[43mgenaix\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbuild_generative_service\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 854\u001b[39m \u001b[43m \u001b[49m\u001b[43mcredentials\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcredentials\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 855\u001b[39m \u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[43m=\u001b[49m\u001b[43mgoogle_api_key\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 856\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient_info\u001b[49m\u001b[43m=\u001b[49m\u001b[43mclient_info\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 857\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient_options\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mclient_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 858\u001b[39m \u001b[43m \u001b[49m\u001b[43mtransport\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtransport\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 859\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 860\u001b[39m \u001b[38;5;28mself\u001b[39m.async_client_running = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 861\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n",
93
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\langchain_google_genai\\_genai_extension.py:276\u001b[39m, in \u001b[36mbuild_generative_service\u001b[39m\u001b[34m(credentials, api_key, client_options, client_info, transport)\u001b[39m\n\u001b[32m 262\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mbuild_generative_service\u001b[39m(\n\u001b[32m 263\u001b[39m credentials: Optional[credentials.Credentials] = \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m 264\u001b[39m api_key: Optional[\u001b[38;5;28mstr\u001b[39m] = \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m (...)\u001b[39m\u001b[32m 267\u001b[39m transport: Optional[\u001b[38;5;28mstr\u001b[39m] = \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m 268\u001b[39m ) -> v1betaGenerativeServiceClient:\n\u001b[32m 269\u001b[39m config = _prepare_config(\n\u001b[32m 270\u001b[39m credentials=credentials,\n\u001b[32m 271\u001b[39m api_key=api_key,\n\u001b[32m (...)\u001b[39m\u001b[32m 274\u001b[39m client_info=client_info,\n\u001b[32m 275\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m276\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mv1betaGenerativeServiceClient\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\n",
94
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\google\\ai\\generativelanguage_v1beta\\services\\generative_service\\client.py:667\u001b[39m, in \u001b[36mGenerativeServiceClient.__init__\u001b[39m\u001b[34m(self, credentials, transport, client_options, client_info)\u001b[39m\n\u001b[32m 658\u001b[39m transport_init: Union[\n\u001b[32m 659\u001b[39m Type[GenerativeServiceTransport],\n\u001b[32m 660\u001b[39m Callable[..., GenerativeServiceTransport],\n\u001b[32m (...)\u001b[39m\u001b[32m 664\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m cast(Callable[..., GenerativeServiceTransport], transport)\n\u001b[32m 665\u001b[39m )\n\u001b[32m 666\u001b[39m \u001b[38;5;66;03m# initialize with the provided callable or the passed in class\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m667\u001b[39m \u001b[38;5;28mself\u001b[39m._transport = \u001b[43mtransport_init\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 668\u001b[39m \u001b[43m \u001b[49m\u001b[43mcredentials\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcredentials\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 669\u001b[39m \u001b[43m \u001b[49m\u001b[43mcredentials_file\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_client_options\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcredentials_file\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 670\u001b[39m \u001b[43m \u001b[49m\u001b[43mhost\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_api_endpoint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 671\u001b[39m \u001b[43m \u001b[49m\u001b[43mscopes\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_client_options\u001b[49m\u001b[43m.\u001b[49m\u001b[43mscopes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 672\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient_cert_source_for_mtls\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_client_cert_source\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 673\u001b[39m \u001b[43m \u001b[49m\u001b[43mquota_project_id\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_client_options\u001b[49m\u001b[43m.\u001b[49m\u001b[43mquota_project_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 674\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient_info\u001b[49m\u001b[43m=\u001b[49m\u001b[43mclient_info\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 675\u001b[39m \u001b[43m \u001b[49m\u001b[43malways_use_jwt_access\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 676\u001b[39m \u001b[43m \u001b[49m\u001b[43mapi_audience\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_client_options\u001b[49m\u001b[43m.\u001b[49m\u001b[43mapi_audience\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 677\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 679\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33masync\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mself\u001b[39m._transport):\n\u001b[32m 680\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m CLIENT_LOGGING_SUPPORTED \u001b[38;5;129;01mand\u001b[39;00m _LOGGER.isEnabledFor(\n\u001b[32m 681\u001b[39m std_logging.DEBUG\n\u001b[32m 682\u001b[39m ): \u001b[38;5;66;03m# pragma: NO COVER\u001b[39;00m\n",
95
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\google\\ai\\generativelanguage_v1beta\\services\\generative_service\\transports\\grpc.py:235\u001b[39m, in \u001b[36mGenerativeServiceGrpcTransport.__init__\u001b[39m\u001b[34m(self, host, credentials, credentials_file, scopes, channel, api_mtls_endpoint, client_cert_source, ssl_channel_credentials, client_cert_source_for_mtls, quota_project_id, client_info, always_use_jwt_access, api_audience)\u001b[39m\n\u001b[32m 230\u001b[39m \u001b[38;5;28mself\u001b[39m._ssl_channel_credentials = grpc.ssl_channel_credentials(\n\u001b[32m 231\u001b[39m certificate_chain=cert, private_key=key\n\u001b[32m 232\u001b[39m )\n\u001b[32m 234\u001b[39m \u001b[38;5;66;03m# The base transport sets the host, credentials and scopes\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m235\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[34;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[32m 236\u001b[39m \u001b[43m \u001b[49m\u001b[43mhost\u001b[49m\u001b[43m=\u001b[49m\u001b[43mhost\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 237\u001b[39m \u001b[43m \u001b[49m\u001b[43mcredentials\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcredentials\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 238\u001b[39m \u001b[43m \u001b[49m\u001b[43mcredentials_file\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcredentials_file\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 239\u001b[39m \u001b[43m \u001b[49m\u001b[43mscopes\u001b[49m\u001b[43m=\u001b[49m\u001b[43mscopes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 240\u001b[39m \u001b[43m \u001b[49m\u001b[43mquota_project_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43mquota_project_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 241\u001b[39m \u001b[43m \u001b[49m\u001b[43mclient_info\u001b[49m\u001b[43m=\u001b[49m\u001b[43mclient_info\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 242\u001b[39m \u001b[43m \u001b[49m\u001b[43malways_use_jwt_access\u001b[49m\u001b[43m=\u001b[49m\u001b[43malways_use_jwt_access\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 243\u001b[39m \u001b[43m \u001b[49m\u001b[43mapi_audience\u001b[49m\u001b[43m=\u001b[49m\u001b[43mapi_audience\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 244\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 246\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m._grpc_channel:\n\u001b[32m 247\u001b[39m \u001b[38;5;66;03m# initialize with the provided callable or the default channel\u001b[39;00m\n\u001b[32m 248\u001b[39m channel_init = channel \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m).create_channel\n",
96
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\google\\ai\\generativelanguage_v1beta\\services\\generative_service\\transports\\base.py:100\u001b[39m, in \u001b[36mGenerativeServiceTransport.__init__\u001b[39m\u001b[34m(self, host, credentials, credentials_file, scopes, quota_project_id, client_info, always_use_jwt_access, api_audience, **kwargs)\u001b[39m\n\u001b[32m 96\u001b[39m credentials, _ = google.auth.load_credentials_from_file(\n\u001b[32m 97\u001b[39m credentials_file, **scopes_kwargs, quota_project_id=quota_project_id\n\u001b[32m 98\u001b[39m )\n\u001b[32m 99\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m credentials \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m._ignore_credentials:\n\u001b[32m--> \u001b[39m\u001b[32m100\u001b[39m credentials, _ = \u001b[43mgoogle\u001b[49m\u001b[43m.\u001b[49m\u001b[43mauth\u001b[49m\u001b[43m.\u001b[49m\u001b[43mdefault\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 101\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mscopes_kwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquota_project_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43mquota_project_id\u001b[49m\n\u001b[32m 102\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 103\u001b[39m \u001b[38;5;66;03m# Don't apply audience if the credentials file passed from user.\u001b[39;00m\n\u001b[32m 104\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(credentials, \u001b[33m\"\u001b[39m\u001b[33mwith_gdch_audience\u001b[39m\u001b[33m\"\u001b[39m):\n",
97
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\dines\\OneDrive\\Desktop\\Ai for Marketing\\venv\\Lib\\site-packages\\google\\auth\\_default.py:719\u001b[39m, in \u001b[36mdefault\u001b[39m\u001b[34m(scopes, request, quota_project_id, default_scopes)\u001b[39m\n\u001b[32m 711\u001b[39m _LOGGER.warning(\n\u001b[32m 712\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mNo project ID could be determined. Consider running \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 713\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m`gcloud config set project` or setting the \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 714\u001b[39m \u001b[33m\"\u001b[39m\u001b[33menvironment variable\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 715\u001b[39m environment_vars.PROJECT,\n\u001b[32m 716\u001b[39m )\n\u001b[32m 717\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m credentials, effective_project_id\n\u001b[32m--> \u001b[39m\u001b[32m719\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS)\n",
98
+ "\u001b[31mDefaultCredentialsError\u001b[39m: Your default credentials were not found. To set up Application Default Credentials, see https://cloud.google.com/docs/authentication/external/set-up-adc for more information."
99
+ ]
100
+ }
101
+ ],
102
+ "source": [
103
+ "from langchain_google_genai import ChatGoogleGenerativeAI\n",
104
+ "import os\n",
105
+ "\n",
106
+ "# Set the API key\n",
107
+ "os.environ[\"GEMINI_API_KEY\"] = \"AIzaSyA2WApH-qFk1hetH3wmpT1pR6J0OOm3U3c\"\n",
108
+ "\n",
109
+ "# Use the correct model name from the list\n",
110
+ "llm = ChatGoogleGenerativeAI(model=\"gemini-1.5-pro-latest\")\n",
111
+ "\n",
112
+ "# Test the model with a prompt\n",
113
+ "response = llm.invoke(\"Generate a marketing slogan for AI-powered advertising.\")\n",
114
+ "print(response)\n"
115
+ ]
116
+ }
117
+ ],
118
+ "metadata": {
119
+ "kernelspec": {
120
+ "display_name": "venv",
121
+ "language": "python",
122
+ "name": "python3"
123
+ },
124
+ "language_info": {
125
+ "codemirror_mode": {
126
+ "name": "ipython",
127
+ "version": 3
128
+ },
129
+ "file_extension": ".py",
130
+ "mimetype": "text/x-python",
131
+ "name": "python",
132
+ "nbconvert_exporter": "python",
133
+ "pygments_lexer": "ipython3",
134
+ "version": "3.12.6"
135
+ }
136
+ },
137
+ "nbformat": 4,
138
+ "nbformat_minor": 2
139
+ }
streamlit_gemini_langchain.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from langchain_google_genai import ChatGoogleGenerativeAI # Correct Import
3
+ from dotenv import load_dotenv
4
+ import os
5
+
6
+ # Load API key from .env file
7
+ load_dotenv()
8
+ API_KEY = os.getenv("GEMINI_API_KEY")
9
+
10
+ # Initialize LangChain's ChatGoogleGenerativeAI
11
+ llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro", google_api_key=API_KEY)
12
+
13
+ # Function to process and format the AI output
14
+ def format_output(text):
15
+ """Refine AI-generated text into a structured format."""
16
+ sections = text.split("**option") # Split into different options
17
+ formatted_text = ""
18
+
19
+ for section in sections:
20
+ if section.strip():
21
+ formatted_text += f"🟒 **Option {section.strip()}**\n\n" # Highlight each option
22
+ return formatted_text if formatted_text else "No output generated. Try again."
23
+
24
+ # Function to generate AI content using LangChain
25
+ def generate_marketing_content(prompt):
26
+ """Generate marketing content using LangChain's ChatGoogleGenerativeAI."""
27
+ try:
28
+ response = llm.invoke(prompt) # Use invoke() instead of predict()
29
+ return format_output(response.content) # Extract text correctly
30
+ except Exception as e:
31
+ return f"❌ Error: {str(e)}"
32
+
33
+ # Streamlit UI
34
+ st.set_page_config(page_title="AI Marketing Generator", layout="wide")
35
+ st.title("πŸš€ AI Marketing Generator")
36
+ st.write("Generate high-quality marketing slogans, ad copy, and campaign ideas instantly!")
37
+
38
+ # User Inputs
39
+ category = st.selectbox("Select Content Type", ["Slogan", "Ad Copy", "Campaign Idea"])
40
+ tone = st.selectbox("Select Tone", ["Energetic ⚑", "Professional πŸ‘”", "Fun πŸŽ‰"])
41
+ product = st.text_input("Enter Product Name")
42
+
43
+ if st.button("🎯 Generate Marketing Content"):
44
+ if product:
45
+ prompt = f"Generate a {tone.split()[0].lower()} {category.lower()} for the following product: {product}."
46
+ output = generate_marketing_content(prompt)
47
+
48
+ st.success("βœ… Content Generated Successfully!")
49
+ st.subheader("πŸ“Œ **Generated Content**:")
50
+ st.markdown(output, unsafe_allow_html=True)
51
+ else:
52
+ st.warning("⚠️ Please enter a product description.")