src/frontends/streamlit/frontend/utils/title_summary.py (30 lines of code) (raw):

# Copyright 2025 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. # mypy: disable-error-code="assignment" import os from typing import Any import google.auth from langchain_core.messages import AIMessage from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_google_vertexai import ChatVertexAI title_template = ChatPromptTemplate.from_messages( [ ( "system", """Given a list of messages between a human and AI, come up with a short and relevant title for the conversation. Use up to 10 words. The title needs to be concise. Examples: **Input:** ``` Human: hi, what is the best italian dish? AI: That's a tough one! Italy has so many amazing dishes, it's hard to pick just one "best." To help me give you a great suggestion, tell me a little more about what you're looking for. ``` **Output:** Best italian dish **Input:** ``` Human: How to fix a broken laptop screen? AI: Fixing a broken laptop screen can be tricky and often requires professional help. However, there are a few things you can try at home before resorting to a repair shop. ``` **Output:** Fixing a broken laptop screen **Input:** ``` Human: Can you write me a poem about the beach? AI: As the sun dips down below the horizon And the waves gently kiss the shore, I sit here and watch the ocean And feel its power evermore. ``` **Output:** Poem about the beach **Input:** ``` Human: What's the best way to learn to code? AI: There are many ways to learn to code, and the best method for you will depend on your learning style and goals. ``` **Output:** How to learn to code If there's not enough context in the conversation to create a meaningful title, create a generic title like "New Conversation", or "A simple greeting". """, ), MessagesPlaceholder(variable_name="messages"), ] ) try: # Initialize Vertex AI with default project credentials _, project_id = google.auth.default() llm = ChatVertexAI( model_name="gemini-2.0-flash-001", temperature=0, project=project_id, location=os.getenv("LOCATION", "us-central1"), ) chain_title = title_template | llm except Exception: # Fallback to a simple title generator when Vertex AI is unavailable print("WARNING: Failed to initialize Vertex AI. Using dummy LLM instead.") class DummyChain: def invoke(*args: Any, **kwargs: Any) -> AIMessage: return AIMessage(content="conversation") chain_title = DummyChain()