Spaces:
No application file
No application file
Upload 3 files
Browse files- .env +1 -0
- gemini_test.ipynb +139 -0
- 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.")
|