• Let the AI Security War Games Begin

    In February 2024, CNN reported, “A finance worker at a multinational firm was tricked into paying out million to fraudsters using deepfake technology to pose as the company’s chief financial officer in a video conference call.” In Europe, a second firm experienced a multimillion-dollar fraud when a deepfake emulated a board member in a video allegedly approving a fraudulent transfer of funds. “Banks and financial institutions are particularly at risk,” said The Hack Academy. “A study by Deloitte found that over 50% of senior executives expect deepfake scams to target their organizations soon. These attacks can undermine trust and lead to significant financial loss.”  Hack Academy went on to say that AI-inspired security attacks weren’t confined to deepfakes. These attacks were also beginning to occur with increased regularity in the form of corporate espionage and misinformation campaigns. AI brings new, more dangerous tactics to traditional security attack methods like phishing, social engineering and the insertion of malware into systems. For CIOs, enterprise AI system developers, data scientists and IT network professionals, AI changes the rules and the tactics for security, given AI’s limitless potential for both good and bad. This is forcing a reset in how IT thinks about security against malicious actors and intruders. Related:How Bad Actors are Exploiting AI What exactly is IT up against? The AI tools that are available on the dark web and in public cyber marketplaces give security perpetrators a wide choice of AI weaponry. Also, IoT and edge networks now present much broader enterprise attack surfaces. Security threats can come in videos, phone calls, social media sites, corporate systems and networks, vendor clouds, IoT devices, network end points, and virtually any entry point into a corporate IT environment that electronic communications can penetrate. Here are some of the current AI-embellished security attacks that companies are seeing: Convincing deepfake videos of corporate executives and stakeholders that are intended to dupe companies in pursuing certain actions or transferring certain assets or funds. This deep faking also extends to voice simulations of key personnel that are left as voicemails in corporate phone systems.  Phishing and spearfishing attacks that send convincing emailsto employees, who mistakenly open them because they think the sender is their boss, the CEO or someone else they perceive as trusted. AI supercharges these attacks because it can automate and send out a large volume of emails that hit many employee email accounts. That AI continues to “learn” with the help of machine learning so it can discover new trusted sender candidates for future attacks.   Related:Adaptive messaging that uses generative AI to craft messages to users that correct grammar and that “learn” from corporate communication styles so they can more closely emulate corporate communications that make them seem legitimate. Mutating code that uses AI to change malware signatures on the fly so antivirus detection mechanisms can be evaded. Data poisoning that occurs when a corporate or cloud provider’s AI data repository is injected by malware that altersso the data produces erroneous and misleading results.  Fighting Back With Tech To combat these supercharged AI-based security threats, IT has number of tools, techniques and strategies it can consider. Fighting deepfakes. Deepfakes can come in the form of videos, voicemails and photos. Since deepfakes are unstructured data objects that can’t be parsed in their native forms like real data, there are new tools on the market that can convert these objects into graphical representations that can be analyzed to evaluate whether there is something in an object that should or shouldn’t be there. The goal is to confirm authenticity.  Related:Fighting phishing and spear phishing. A combination of policy and practice works best to combat phishing and spear phishing attacks. Both types of attacks are predicated on users being tricked into opening an email attachment that they believe is from a trusted sender, so the first line of defense is educatingusers on how to handle their email. For instance, a user should notify IT if they receive an email that seems unusual or unexpected, and they should never open it. IT should also review its current security tools. Is it still using older security monitoring software that doesn’t include more modern technologies like observability, which can check for security intrusions or malware at more atomic levels?  Is IT still using IAMsoftware to track user identities and activities at a top level in the cloud and on top and atomic levels on premises, or has it also added cloud identity entitlements management, which gives it an atomic level view of  user accesses and activities in the cloud? Better yet, has IT moved to identity governance administration, which can serve as an over-arching umbrella for IAM and CIEM plugins, plus provide detailed audit reports and automated compliance across all platforms? Fighting embedded malware code. Malware can lie dormant in systems for months, giving a bad actor the option to activate it whenever the timing is right. It’s all the more reason for IT to augment its security staff with new skillsets, such as that of the “threat hunter,” whose job is to examine networks, data and systems on a daily basis, hunting down malware that might be lurking within, and destroying it before it activates. Fighting with zero-trust networks. Internet of Thingsdevices come into companies with little or no security because IoT suppliers don’t pay much attention to it and there is a general expectation that corporate IT will configure devices to the appropriate security settings. The problem is, IT often forgets to do this. There are also times when users purchase their own IoT gear, and IT doesn’t know about it. Zero-trust networks help manage this, because they detect and report on everything that is added, subtracted or modified on the network. This gives IT visibility into new, potential security breach points. A second step is to formalize IT procedures for IoT devices so that no IoT device is deployed without the device’s security first being set to corporate standards.  Fighting AI data poisoning. AI models, systems and data should be continuously monitored for accuracy. As soon as they show lowered levels of accuracy or produce unusual conclusions, the data repository, inflows and outflows should be examined for quality and non-bias of data. If contamination is found, the system should be taken down, the data sanitized, and the sources of the contamination traced, tracked and disabled. Fighting AI with AI. Most every security tool on the market today contains AI functionality to detect anomalies, abnormal data patterns and user activities. Additionally, forensics AI can dissect a security breach that does occur, isolating how it happened, where it originated from and what caused it. Since most sites don’t have on-staff forensics experts, IT will have to train staff in forensics skills. Fighting with regular audits and vulnerability testing. Minimally, IT vulnerability testing should be performed on a quarterly basis, and full security audits on an annual basis. If sites use cloud providers, they should request each provider’s latest security audit for review. An outside auditor can also help sites prepare for future AI-driven security threats, because auditors stay on top of the industry, visit many different companies, and see many different situations. An advanced knowledge of threats that loom in the future helps sites prepare for new battles. Summary AI technology is moving faster than legal rulings and regulations. This leaves most IT departments “on their own” to develop security defenses against bad actors who use AI against them.  The good news is that IT already has insights into how bad actors intend to use AI, and there are tools on the market that can help defensive efforts. What’s been missing is a proactive and aggressive battle plan from IT. That has to start now. 
    #let #security #war #games #begin
    Let the AI Security War Games Begin
    In February 2024, CNN reported, “A finance worker at a multinational firm was tricked into paying out million to fraudsters using deepfake technology to pose as the company’s chief financial officer in a video conference call.” In Europe, a second firm experienced a multimillion-dollar fraud when a deepfake emulated a board member in a video allegedly approving a fraudulent transfer of funds. “Banks and financial institutions are particularly at risk,” said The Hack Academy. “A study by Deloitte found that over 50% of senior executives expect deepfake scams to target their organizations soon. These attacks can undermine trust and lead to significant financial loss.”  Hack Academy went on to say that AI-inspired security attacks weren’t confined to deepfakes. These attacks were also beginning to occur with increased regularity in the form of corporate espionage and misinformation campaigns. AI brings new, more dangerous tactics to traditional security attack methods like phishing, social engineering and the insertion of malware into systems. For CIOs, enterprise AI system developers, data scientists and IT network professionals, AI changes the rules and the tactics for security, given AI’s limitless potential for both good and bad. This is forcing a reset in how IT thinks about security against malicious actors and intruders. Related:How Bad Actors are Exploiting AI What exactly is IT up against? The AI tools that are available on the dark web and in public cyber marketplaces give security perpetrators a wide choice of AI weaponry. Also, IoT and edge networks now present much broader enterprise attack surfaces. Security threats can come in videos, phone calls, social media sites, corporate systems and networks, vendor clouds, IoT devices, network end points, and virtually any entry point into a corporate IT environment that electronic communications can penetrate. Here are some of the current AI-embellished security attacks that companies are seeing: Convincing deepfake videos of corporate executives and stakeholders that are intended to dupe companies in pursuing certain actions or transferring certain assets or funds. This deep faking also extends to voice simulations of key personnel that are left as voicemails in corporate phone systems.  Phishing and spearfishing attacks that send convincing emailsto employees, who mistakenly open them because they think the sender is their boss, the CEO or someone else they perceive as trusted. AI supercharges these attacks because it can automate and send out a large volume of emails that hit many employee email accounts. That AI continues to “learn” with the help of machine learning so it can discover new trusted sender candidates for future attacks.   Related:Adaptive messaging that uses generative AI to craft messages to users that correct grammar and that “learn” from corporate communication styles so they can more closely emulate corporate communications that make them seem legitimate. Mutating code that uses AI to change malware signatures on the fly so antivirus detection mechanisms can be evaded. Data poisoning that occurs when a corporate or cloud provider’s AI data repository is injected by malware that altersso the data produces erroneous and misleading results.  Fighting Back With Tech To combat these supercharged AI-based security threats, IT has number of tools, techniques and strategies it can consider. Fighting deepfakes. Deepfakes can come in the form of videos, voicemails and photos. Since deepfakes are unstructured data objects that can’t be parsed in their native forms like real data, there are new tools on the market that can convert these objects into graphical representations that can be analyzed to evaluate whether there is something in an object that should or shouldn’t be there. The goal is to confirm authenticity.  Related:Fighting phishing and spear phishing. A combination of policy and practice works best to combat phishing and spear phishing attacks. Both types of attacks are predicated on users being tricked into opening an email attachment that they believe is from a trusted sender, so the first line of defense is educatingusers on how to handle their email. For instance, a user should notify IT if they receive an email that seems unusual or unexpected, and they should never open it. IT should also review its current security tools. Is it still using older security monitoring software that doesn’t include more modern technologies like observability, which can check for security intrusions or malware at more atomic levels?  Is IT still using IAMsoftware to track user identities and activities at a top level in the cloud and on top and atomic levels on premises, or has it also added cloud identity entitlements management, which gives it an atomic level view of  user accesses and activities in the cloud? Better yet, has IT moved to identity governance administration, which can serve as an over-arching umbrella for IAM and CIEM plugins, plus provide detailed audit reports and automated compliance across all platforms? Fighting embedded malware code. Malware can lie dormant in systems for months, giving a bad actor the option to activate it whenever the timing is right. It’s all the more reason for IT to augment its security staff with new skillsets, such as that of the “threat hunter,” whose job is to examine networks, data and systems on a daily basis, hunting down malware that might be lurking within, and destroying it before it activates. Fighting with zero-trust networks. Internet of Thingsdevices come into companies with little or no security because IoT suppliers don’t pay much attention to it and there is a general expectation that corporate IT will configure devices to the appropriate security settings. The problem is, IT often forgets to do this. There are also times when users purchase their own IoT gear, and IT doesn’t know about it. Zero-trust networks help manage this, because they detect and report on everything that is added, subtracted or modified on the network. This gives IT visibility into new, potential security breach points. A second step is to formalize IT procedures for IoT devices so that no IoT device is deployed without the device’s security first being set to corporate standards.  Fighting AI data poisoning. AI models, systems and data should be continuously monitored for accuracy. As soon as they show lowered levels of accuracy or produce unusual conclusions, the data repository, inflows and outflows should be examined for quality and non-bias of data. If contamination is found, the system should be taken down, the data sanitized, and the sources of the contamination traced, tracked and disabled. Fighting AI with AI. Most every security tool on the market today contains AI functionality to detect anomalies, abnormal data patterns and user activities. Additionally, forensics AI can dissect a security breach that does occur, isolating how it happened, where it originated from and what caused it. Since most sites don’t have on-staff forensics experts, IT will have to train staff in forensics skills. Fighting with regular audits and vulnerability testing. Minimally, IT vulnerability testing should be performed on a quarterly basis, and full security audits on an annual basis. If sites use cloud providers, they should request each provider’s latest security audit for review. An outside auditor can also help sites prepare for future AI-driven security threats, because auditors stay on top of the industry, visit many different companies, and see many different situations. An advanced knowledge of threats that loom in the future helps sites prepare for new battles. Summary AI technology is moving faster than legal rulings and regulations. This leaves most IT departments “on their own” to develop security defenses against bad actors who use AI against them.  The good news is that IT already has insights into how bad actors intend to use AI, and there are tools on the market that can help defensive efforts. What’s been missing is a proactive and aggressive battle plan from IT. That has to start now.  #let #security #war #games #begin
    WWW.INFORMATIONWEEK.COM
    Let the AI Security War Games Begin
    In February 2024, CNN reported, “A finance worker at a multinational firm was tricked into paying out $25 million to fraudsters using deepfake technology to pose as the company’s chief financial officer in a video conference call.” In Europe, a second firm experienced a multimillion-dollar fraud when a deepfake emulated a board member in a video allegedly approving a fraudulent transfer of funds. “Banks and financial institutions are particularly at risk,” said The Hack Academy. “A study by Deloitte found that over 50% of senior executives expect deepfake scams to target their organizations soon. These attacks can undermine trust and lead to significant financial loss.”  Hack Academy went on to say that AI-inspired security attacks weren’t confined to deepfakes. These attacks were also beginning to occur with increased regularity in the form of corporate espionage and misinformation campaigns. AI brings new, more dangerous tactics to traditional security attack methods like phishing, social engineering and the insertion of malware into systems. For CIOs, enterprise AI system developers, data scientists and IT network professionals, AI changes the rules and the tactics for security, given AI’s limitless potential for both good and bad. This is forcing a reset in how IT thinks about security against malicious actors and intruders. Related:How Bad Actors are Exploiting AI What exactly is IT up against? The AI tools that are available on the dark web and in public cyber marketplaces give security perpetrators a wide choice of AI weaponry. Also, IoT and edge networks now present much broader enterprise attack surfaces. Security threats can come in videos, phone calls, social media sites, corporate systems and networks, vendor clouds, IoT devices, network end points, and virtually any entry point into a corporate IT environment that electronic communications can penetrate. Here are some of the current AI-embellished security attacks that companies are seeing: Convincing deepfake videos of corporate executives and stakeholders that are intended to dupe companies in pursuing certain actions or transferring certain assets or funds. This deep faking also extends to voice simulations of key personnel that are left as voicemails in corporate phone systems.  Phishing and spearfishing attacks that send convincing emails (some with malicious attachments) to employees, who mistakenly open them because they think the sender is their boss, the CEO or someone else they perceive as trusted. AI supercharges these attacks because it can automate and send out a large volume of emails that hit many employee email accounts. That AI continues to “learn” with the help of machine learning so it can discover new trusted sender candidates for future attacks.   Related:Adaptive messaging that uses generative AI to craft messages to users that correct grammar and that “learn” from corporate communication styles so they can more closely emulate corporate communications that make them seem legitimate. Mutating code that uses AI to change malware signatures on the fly so antivirus detection mechanisms can be evaded. Data poisoning that occurs when a corporate or cloud provider’s AI data repository is injected by malware that alters (“poisons”) so the data produces erroneous and misleading results.  Fighting Back With Tech To combat these supercharged AI-based security threats, IT has number of tools, techniques and strategies it can consider. Fighting deepfakes. Deepfakes can come in the form of videos, voicemails and photos. Since deepfakes are unstructured data objects that can’t be parsed in their native forms like real data, there are new tools on the market that can convert these objects into graphical representations that can be analyzed to evaluate whether there is something in an object that should or shouldn’t be there. The goal is to confirm authenticity.  Related:Fighting phishing and spear phishing. A combination of policy and practice works best to combat phishing and spear phishing attacks. Both types of attacks are predicated on users being tricked into opening an email attachment that they believe is from a trusted sender, so the first line of defense is educating (and repeat-educating) users on how to handle their email. For instance, a user should notify IT if they receive an email that seems unusual or unexpected, and they should never open it. IT should also review its current security tools. Is it still using older security monitoring software that doesn’t include more modern technologies like observability, which can check for security intrusions or malware at more atomic levels?  Is IT still using IAM (identity access management) software to track user identities and activities at a top level in the cloud and on top and atomic levels on premises, or has it also added cloud identity entitlements management (CIEM), which gives it an atomic level view of  user accesses and activities in the cloud? Better yet, has IT moved to identity governance administration (IGA), which can serve as an over-arching umbrella for IAM and CIEM plugins, plus provide detailed audit reports and automated compliance across all platforms? Fighting embedded malware code. Malware can lie dormant in systems for months, giving a bad actor the option to activate it whenever the timing is right. It’s all the more reason for IT to augment its security staff with new skillsets, such as that of the “threat hunter,” whose job is to examine networks, data and systems on a daily basis, hunting down malware that might be lurking within, and destroying it before it activates. Fighting with zero-trust networks. Internet of Things (IoT) devices come into companies with little or no security because IoT suppliers don’t pay much attention to it and there is a general expectation that corporate IT will configure devices to the appropriate security settings. The problem is, IT often forgets to do this. There are also times when users purchase their own IoT gear, and IT doesn’t know about it. Zero-trust networks help manage this, because they detect and report on everything that is added, subtracted or modified on the network. This gives IT visibility into new, potential security breach points. A second step is to formalize IT procedures for IoT devices so that no IoT device is deployed without the device’s security first being set to corporate standards.  Fighting AI data poisoning. AI models, systems and data should be continuously monitored for accuracy. As soon as they show lowered levels of accuracy or produce unusual conclusions, the data repository, inflows and outflows should be examined for quality and non-bias of data. If contamination is found, the system should be taken down, the data sanitized, and the sources of the contamination traced, tracked and disabled. Fighting AI with AI. Most every security tool on the market today contains AI functionality to detect anomalies, abnormal data patterns and user activities. Additionally, forensics AI can dissect a security breach that does occur, isolating how it happened, where it originated from and what caused it. Since most sites don’t have on-staff forensics experts, IT will have to train staff in forensics skills. Fighting with regular audits and vulnerability testing. Minimally, IT vulnerability testing should be performed on a quarterly basis, and full security audits on an annual basis. If sites use cloud providers, they should request each provider’s latest security audit for review. An outside auditor can also help sites prepare for future AI-driven security threats, because auditors stay on top of the industry, visit many different companies, and see many different situations. An advanced knowledge of threats that loom in the future helps sites prepare for new battles. Summary AI technology is moving faster than legal rulings and regulations. This leaves most IT departments “on their own” to develop security defenses against bad actors who use AI against them.  The good news is that IT already has insights into how bad actors intend to use AI, and there are tools on the market that can help defensive efforts. What’s been missing is a proactive and aggressive battle plan from IT. That has to start now. 
    0 Kommentare 0 Anteile
  • Take-Two Interactive, Publisher of ‘GTA,’ Plans $1 Billion Stock Offering

    “Grand Theft Auto” publisher Take-Two Interactive is planning to sell off billion of its common stock.

    In addition to the public offering, which was announced Tuesday, the video game giant will give underwriters a 30-day option to purchase up to an additional million of shares. The offering is subject to market conditions.

    Per the company, “Take-Two intends to use the net proceeds for general corporate purposes, which may include the repayment of outstanding debt and future acquisitions.”

    Related Stories

    Take-Two, which is the parent company to Rockstar Games, 2K and Zynga, saw its shares drop nearly 3% in after-hours trading Tuesday upon news of the stock sale.

    Popular on Variety

    The public offering announcement comes less than a week out from Take-Two reporting its latest earnings results, which included a writedown of more than billion. That was on the heels of the publisher revealing on May 2 that its highly anticipated Rockstar Games-developed “Grand Theft Auto 6” would be shifting from a planned fall 2025 release to a May 26, 2026 launch.

    Speaking with Variety last week about the earnings results and anticipation for the company’s fiscal 2026, Take-Two chairman and CEO Strauss Zelnick said “obviously, the net bookings that are expected for Fiscal ’26 are lower without the release of ‘GTA 6,’ that goes without saying,” adding: “But we haven’t actually parsed what the specific effect is, although analysts have speculated.”

    “I think the key point to bear in mind is, once again, we’re setting a record, which is what we said we would do,” Zelnick said. “We certainly expect growth in Fiscal ’27. This company is in extraordinarily sound shape and well positioned both for the challenges and opportunities ahead.”
    #taketwo #interactive #publisher #gta #plans
    Take-Two Interactive, Publisher of ‘GTA,’ Plans $1 Billion Stock Offering
    “Grand Theft Auto” publisher Take-Two Interactive is planning to sell off billion of its common stock. In addition to the public offering, which was announced Tuesday, the video game giant will give underwriters a 30-day option to purchase up to an additional million of shares. The offering is subject to market conditions. Per the company, “Take-Two intends to use the net proceeds for general corporate purposes, which may include the repayment of outstanding debt and future acquisitions.” Related Stories Take-Two, which is the parent company to Rockstar Games, 2K and Zynga, saw its shares drop nearly 3% in after-hours trading Tuesday upon news of the stock sale. Popular on Variety The public offering announcement comes less than a week out from Take-Two reporting its latest earnings results, which included a writedown of more than billion. That was on the heels of the publisher revealing on May 2 that its highly anticipated Rockstar Games-developed “Grand Theft Auto 6” would be shifting from a planned fall 2025 release to a May 26, 2026 launch. Speaking with Variety last week about the earnings results and anticipation for the company’s fiscal 2026, Take-Two chairman and CEO Strauss Zelnick said “obviously, the net bookings that are expected for Fiscal ’26 are lower without the release of ‘GTA 6,’ that goes without saying,” adding: “But we haven’t actually parsed what the specific effect is, although analysts have speculated.” “I think the key point to bear in mind is, once again, we’re setting a record, which is what we said we would do,” Zelnick said. “We certainly expect growth in Fiscal ’27. This company is in extraordinarily sound shape and well positioned both for the challenges and opportunities ahead.” #taketwo #interactive #publisher #gta #plans
    VARIETY.COM
    Take-Two Interactive, Publisher of ‘GTA,’ Plans $1 Billion Stock Offering
    “Grand Theft Auto” publisher Take-Two Interactive is planning to sell off $1 billion of its common stock. In addition to the public offering, which was announced Tuesday, the video game giant will give underwriters a 30-day option to purchase up to an additional $150 million of shares. The offering is subject to market conditions. Per the company, “Take-Two intends to use the net proceeds for general corporate purposes, which may include the repayment of outstanding debt and future acquisitions.” Related Stories Take-Two, which is the parent company to Rockstar Games, 2K and Zynga, saw its shares drop nearly 3% in after-hours trading Tuesday upon news of the stock sale. Popular on Variety The public offering announcement comes less than a week out from Take-Two reporting its latest earnings results, which included a writedown of more than $3 billion. That was on the heels of the publisher revealing on May 2 that its highly anticipated Rockstar Games-developed “Grand Theft Auto 6” would be shifting from a planned fall 2025 release to a May 26, 2026 launch. Speaking with Variety last week about the earnings results and anticipation for the company’s fiscal 2026 (which runs April 1, 2025-March 31, 2026), Take-Two chairman and CEO Strauss Zelnick said “obviously, the net bookings that are expected for Fiscal ’26 are lower without the release of ‘GTA 6,’ that goes without saying,” adding: “But we haven’t actually parsed what the specific effect is, although analysts have speculated.” “I think the key point to bear in mind is, once again, we’re setting a record, which is what we said we would do,” Zelnick said. “We certainly expect growth in Fiscal ’27. This company is in extraordinarily sound shape and well positioned both for the challenges and opportunities ahead.”
    0 Kommentare 0 Anteile
  • How to Build a Powerful and Intelligent Question-Answering System by Using Tavily Search API, Chroma, Google Gemini LLMs, and the LangChain Framework

    In this tutorial, we demonstrate how to build a powerful and intelligent question-answering system by combining the strengths of Tavily Search API, Chroma, Google Gemini LLMs, and the LangChain framework. The pipeline leverages real-time web search using Tavily, semantic document caching with Chroma vector store, and contextual response generation through the Gemini model. These tools are integrated through LangChain’s modular components, such as RunnableLambda, ChatPromptTemplate, ConversationBufferMemory, and GoogleGenerativeAIEmbeddings. It goes beyond simple Q&A by introducing a hybrid retrieval mechanism that checks for cached embeddings before invoking fresh web searches. The retrieved documents are intelligently formatted, summarized, and passed through a structured LLM prompt, with attention to source attribution, user history, and confidence scoring. Key functions such as advanced prompt engineering, sentiment and entity analysis, and dynamic vector store updates make this pipeline suitable for advanced use cases like research assistance, domain-specific summarization, and intelligent agents.
    !pip install -qU langchain-community tavily-python langchain-google-genai streamlit matplotlib pandas tiktoken chromadb langchain_core pydantic langchain
    We install and upgrade a comprehensive set of libraries required to build an advanced AI search assistant. It includes tools for retrieval, LLM integration, data handling, visualization, and tokenization. These components form the core foundation for constructing a real-time, context-aware QA system.
    import os
    import getpass
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    import json
    import time
    from typing import List, Dict, Any, Optional
    from datetime import datetime
    We import essential Python libraries used throughout the notebook. It includes standard libraries for environment variables, secure input, time tracking, and data types. Additionally, it brings in core data science tools like pandas, matplotlib, and numpy for data handling, visualization, and numerical computations, as well as json for parsing structured data.
    if "TAVILY_API_KEY" not in os.environ:
    os.environ= getpass.getpassif "GOOGLE_API_KEY" not in os.environ:
    os.environ= getpass.getpassimport logging
    logging.basicConfigs - %s - %s - %s')
    logger = logging.getLoggerWe securely initialize API keys for Tavily and Google Gemini by prompting users only if they’re not already set in the environment, ensuring safe and repeatable access to external services. It also configures a standardized logging setup using Python’s logging module, which helps monitor execution flow and capture debug or error messages throughout the notebook.
    from langchain_community.retrievers import TavilySearchAPIRetriever
    from langchain_community.vectorstores import Chroma
    from langchain_core.documents import Document
    from langchain_core.output_parsers import StrOutputParser, JsonOutputParser
    from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
    from langchain_core.runnables import RunnablePassthrough, RunnableLambda
    from langchain_google_genai import ChatGoogleGenerativeAI, GoogleGenerativeAIEmbeddings
    from langchain.text_splitter import RecursiveCharacterTextSplitter
    from langchain.chains.summarize import load_summarize_chain
    from langchain.memory import ConversationBufferMemory
    We import key components from the LangChain ecosystem and its integrations. It brings in the TavilySearchAPIRetriever for real-time web search, Chroma for vector storage, and GoogleGenerativeAI modules for chat and embedding models. Core LangChain modules like ChatPromptTemplate, RunnableLambda, ConversationBufferMemory, and output parsers enable flexible prompt construction, memory handling, and pipeline execution.
    class SearchQueryError:
    """Exception raised for errors in the search query."""
    pass

    def format_docs:
    formatted_content =for i, doc in enumerate:
    metadata = doc.metadata
    source = metadata.gettitle = metadata.getscore = metadata.getformatted_content.appendreturn "nn".joinWe define two essential components for search and document handling. The SearchQueryError class creates a custom exception to manage invalid or failed search queries gracefully. The format_docs function processes a list of retrieved documents by extracting metadata such as title, source, and relevance score and formatting them into a clean, readable string.
    class SearchResultsParser:
    def parse:
    try:
    if isinstance:
    import re
    import json
    json_match = re.searchif json_match:
    json_str = json_match.groupreturn json.loadsreturn {"answer": text, "sources":, "confidence": 0.5}
    elif hasattr:
    return {"answer": text.content, "sources":, "confidence": 0.5}
    else:
    return {"answer": str, "sources":, "confidence": 0.5}
    except Exception as e:
    logger.warningreturn {"answer": str, "sources":, "confidence": 0.5}
    The SearchResultsParser class provides a robust method for extracting structured information from LLM responses. It attempts to parse a JSON-like string from the model output, returning to a plain text response format if parsing fails. It gracefully handles string outputs and message objects, ensuring consistent downstream processing. In case of errors, it logs a warning and returns a fallback response containing the raw answer, empty sources, and a default confidence score, enhancing the system’s fault tolerance.
    class EnhancedTavilyRetriever:
    def __init__:
    self.api_key = api_key
    self.max_results = max_results
    self.search_depth = search_depth
    self.include_domains = include_domains orself.exclude_domains = exclude_domains orself.retriever = self._create_retrieverself.previous_searches =def _create_retriever:
    try:
    return TavilySearchAPIRetrieverexcept Exception as e:
    logger.errorraise

    def invoke:
    if not query or not query.strip:
    raise SearchQueryErrortry:
    start_time = time.timeresults = self.retriever.invokeend_time = time.timesearch_record = {
    "timestamp": datetime.now.isoformat,
    "query": query,
    "num_results": len,
    "response_time": end_time - start_time
    }
    self.previous_searches.appendreturn results
    except Exception as e:
    logger.errorraise SearchQueryError}")

    def get_search_history:
    return self.previous_searches
    The EnhancedTavilyRetriever class is a custom wrapper around the TavilySearchAPIRetriever, adding greater flexibility, control, and traceability to search operations. It supports advanced features like limiting search depth, domain inclusion/exclusion filters, and configurable result counts. The invoke method performs web searches and tracks each query’s metadata, storing it for later analysis.
    class SearchCache:
    def __init__:
    self.embedding_function = GoogleGenerativeAIEmbeddingsself.vector_store = None
    self.text_splitter = RecursiveCharacterTextSplitterdef add_documents:
    if not documents:
    return

    try:
    if self.vector_store is None:
    self.vector_store = Chroma.from_documentselse:
    self.vector_store.add_documentsexcept Exception as e:
    logger.errordef search:
    if self.vector_store is None:
    returntry:
    return self.vector_store.similarity_searchexcept Exception as e:
    logger.errorreturnThe SearchCache class implements a semantic caching layer that stores and retrieves documents using vector embeddings for efficient similarity search. It uses GoogleGenerativeAIEmbeddings to convert documents into dense vectors and stores them in a Chroma vector database. The add_documents method initializes or updates the vector store, while the search method enables fast retrieval of the most relevant cached documents based on semantic similarity. This reduces redundant API calls and improves response times for repeated or related queries, serving as a lightweight hybrid memory layer in the AI assistant pipeline.
    search_cache = SearchCacheenhanced_retriever = EnhancedTavilyRetrievermemory = ConversationBufferMemorysystem_template = """You are a research assistant that provides accurate answers based on the search results provided.
    Follow these guidelines:
    1. Only use the context provided to answer the question
    2. If the context doesn't contain the answer, say "I don't have sufficient information to answer this question."
    3. Cite your sources by referencing the document numbers
    4. Don't make up information
    5. Keep the answer concise but complete

    Context: {context}
    Chat History: {chat_history}
    """

    system_message = SystemMessagePromptTemplate.from_templatehuman_template = "Question: {question}"
    human_message = HumanMessagePromptTemplate.from_templateprompt = ChatPromptTemplate.from_messagesWe initialize the core components of the AI assistant: a semantic SearchCache, the EnhancedTavilyRetriever for web-based querying, and a ConversationBufferMemory to retain chat history across turns. It also defines a structured prompt using ChatPromptTemplate, guiding the LLM to act as a research assistant. The prompt enforces strict rules for factual accuracy, context usage, source citation, and concise answering, ensuring reliable and grounded responses.
    def get_llm:
    try:
    return ChatGoogleGenerativeAIexcept Exception as e:
    logger.errorraise

    output_parser = SearchResultsParserWe define the get_llm function, which initializes a Google Gemini language model with configurable parameters such as model name, temperature, and decoding settings. It ensures robustness with error handling for failed model initialization. An instance of SearchResultsParser is also created to standardize and structure the LLM’s raw responses, enabling consistent downstream processing of answers and metadata.
    def plot_search_metrics:
    if not search_history:
    printreturn

    df = pd.DataFrameplt.figure)
    plt.subplotplt.plot), df, marker='o')
    plt.titleplt.xlabelplt.ylabel')
    plt.gridplt.subplotplt.bar), df)
    plt.titleplt.xlabelplt.ylabelplt.gridplt.tight_layoutplt.showThe plot_search_metrics function visualizes performance trends from past queries using Matplotlib. It converts the search history into a DataFrame and plots two subgraphs: one showing response time per search and the other displaying the number of results returned. This aids in analyzing the system’s efficiency and search quality over time, helping developers fine-tune the retriever or identify bottlenecks in real-world usage.
    def retrieve_with_fallback:
    cached_results = search_cache.searchif cached_results:
    logger.info} documents from cache")
    return cached_results

    logger.infosearch_results = enhanced_retriever.invokesearch_cache.add_documentsreturn search_results

    def summarize_documents:
    llm = get_llmsummarize_prompt = ChatPromptTemplate.from_templatechain =, "query": lambda _: query}
    | summarize_prompt
    | llm
    | StrOutputParser)

    return chain.invokeThese two functions enhance the assistant’s intelligence and efficiency. The retrieve_with_fallback function implements a hybrid retrieval mechanism: it first attempts to fetch semantically relevant documents from the local Chroma cache and, if unsuccessful, falls back to a real-time Tavily web search, caching the new results for future use. Meanwhile, summarize_documents leverages a Gemini LLM to generate concise summaries from retrieved documents, guided by a structured prompt that ensures relevance to the query. Together, they enable low-latency, informative, and context-aware responses.
    def advanced_chain:
    llm = get_llmif query_engine == "enhanced":
    retriever = lambda query: retrieve_with_fallbackelse:
    retriever = enhanced_retriever.invoke

    def chain_with_history:
    query = input_dictchat_history = memory.load_memory_variablesif include_history elsedocs = retrievercontext = format_docsresult = prompt.invokememory.save_contextreturn llm.invokereturn RunnableLambda| StrOutputParserThe advanced_chain function defines a modular, end-to-end reasoning workflow for answering user queries using cached or real-time search. It initializes the specified Gemini model, selects the retrieval strategy, constructs a response pipeline incorporating chat history, formats documents into context, and prompts the LLM using a system-guided template. The chain also logs the interaction in memory and returns the final answer, parsed into clean text. This design enables flexible experimentation with models and retrieval strategies while maintaining conversation coherence.
    qa_chain = advanced_chaindef analyze_query:
    llm = get_llmanalysis_prompt = ChatPromptTemplate.from_template3. Key entities mentioned
    4. Query typeQuery: {query}

    Return the analysis in JSON format with the following structure:
    {{
    "topic": "main topic",
    "sentiment": "sentiment",
    "entities":,
    "type": "query type"
    }}
    """
    )

    chain = analysis_prompt | llm | output_parser

    return chain.invokeprintprintquery = "what year was breath of the wild released and what was its reception?"
    printWe initialize the final components of the intelligent assistant. qa_chain is the assembled reasoning pipeline ready to process user queries using retrieval, memory, and Gemini-based response generation. The analyze_query function performs a lightweight semantic analysis on a query, extracting the main topic, sentiment, entities, and query type using the Gemini model and a structured JSON prompt. The example query, about Breath of the Wild’s release and reception, showcases how the assistant is triggered and prepared for full-stack inference and semantic interpretation. The printed heading marks the start of interactive execution.
    try:
    printanswer = qa_chain.invokeprintprintprinttry:
    query_analysis = analyze_queryprintprint)
    except Exception as e:
    print: {e}")
    except Exception as e:
    printhistory = enhanced_retriever.get_search_historyprintfor i, h in enumerate:
    printprintspecialized_retriever = EnhancedTavilyRetrievertry:
    specialized_results = specialized_retriever.invokeprint} specialized results")

    summary = summarize_documentsprintprintexcept Exception as e:
    printprintplot_search_metricsWe demonstrate the complete pipeline in action. It performs a search using the qa_chain, displays the generated answer, and then analyzes the query for sentiment, topic, entities, and type. It also retrieves and prints each query’s search history, response time, and result count. Also, it runs a domain-filtered search focused on Nintendo-related sites, summarizes the results, and visualizes search performance using plot_search_metrics, offering a comprehensive view of the assistant’s capabilities in real-time use.
    In conclusion, following this tutorial gives users a comprehensive blueprint for creating a highly capable, context-aware, and scalable RAG system that bridges real-time web intelligence with conversational AI. The Tavily Search API lets users directly pull fresh and relevant content from the web. The Gemini LLM adds robust reasoning and summarization capabilities, while LangChain’s abstraction layer allows seamless orchestration between memory, embeddings, and model outputs. The implementation includes advanced features such as domain-specific filtering, query analysis, and fallback strategies using a semantic vector cache built with Chroma and GoogleGenerativeAIEmbeddings. Also, structured logging, error handling, and analytics dashboards provide transparency and diagnostics for real-world deployment.

    Check out the Colab Notebook. All credit for this research goes to the researchers of this project. Also, feel free to follow us on Twitter and don’t forget to join our 90k+ ML SubReddit.
    Asif RazzaqWebsite |  + postsBioAsif Razzaq is the CEO of Marktechpost Media Inc.. As a visionary entrepreneur and engineer, Asif is committed to harnessing the potential of Artificial Intelligence for social good. His most recent endeavor is the launch of an Artificial Intelligence Media Platform, Marktechpost, which stands out for its in-depth coverage of machine learning and deep learning news that is both technically sound and easily understandable by a wide audience. The platform boasts of over 2 million monthly views, illustrating its popularity among audiences.Asif Razzaqhttps://www.marktechpost.com/author/6flvq/AWS Open-Sources Strands Agents SDK to Simplify AI Agent DevelopmentAsif Razzaqhttps://www.marktechpost.com/author/6flvq/Windsurf Launches SWE-1: A Frontier AI Model Family for End-to-End Software EngineeringAsif Razzaqhttps://www.marktechpost.com/author/6flvq/AI Agents Now Write Code in Parallel: OpenAI Introduces Codex, a Cloud-Based Coding Agent Inside ChatGPTAsif Razzaqhttps://www.marktechpost.com/author/6flvq/A Step-by-Step Guide to Build an Automated Knowledge Graph Pipeline Using LangGraph and NetworkX

    Build GenAI you can trust. ⭐️ Parlant is your open-source engine for controlled, compliant, and purposeful AI conversations — Star Parlant on GitHub!
    #how #build #powerful #intelligent #questionanswering
    How to Build a Powerful and Intelligent Question-Answering System by Using Tavily Search API, Chroma, Google Gemini LLMs, and the LangChain Framework
    In this tutorial, we demonstrate how to build a powerful and intelligent question-answering system by combining the strengths of Tavily Search API, Chroma, Google Gemini LLMs, and the LangChain framework. The pipeline leverages real-time web search using Tavily, semantic document caching with Chroma vector store, and contextual response generation through the Gemini model. These tools are integrated through LangChain’s modular components, such as RunnableLambda, ChatPromptTemplate, ConversationBufferMemory, and GoogleGenerativeAIEmbeddings. It goes beyond simple Q&A by introducing a hybrid retrieval mechanism that checks for cached embeddings before invoking fresh web searches. The retrieved documents are intelligently formatted, summarized, and passed through a structured LLM prompt, with attention to source attribution, user history, and confidence scoring. Key functions such as advanced prompt engineering, sentiment and entity analysis, and dynamic vector store updates make this pipeline suitable for advanced use cases like research assistance, domain-specific summarization, and intelligent agents. !pip install -qU langchain-community tavily-python langchain-google-genai streamlit matplotlib pandas tiktoken chromadb langchain_core pydantic langchain We install and upgrade a comprehensive set of libraries required to build an advanced AI search assistant. It includes tools for retrieval, LLM integration, data handling, visualization, and tokenization. These components form the core foundation for constructing a real-time, context-aware QA system. import os import getpass import pandas as pd import matplotlib.pyplot as plt import numpy as np import json import time from typing import List, Dict, Any, Optional from datetime import datetime We import essential Python libraries used throughout the notebook. It includes standard libraries for environment variables, secure input, time tracking, and data types. Additionally, it brings in core data science tools like pandas, matplotlib, and numpy for data handling, visualization, and numerical computations, as well as json for parsing structured data. if "TAVILY_API_KEY" not in os.environ: os.environ= getpass.getpassif "GOOGLE_API_KEY" not in os.environ: os.environ= getpass.getpassimport logging logging.basicConfigs - %s - %s - %s') logger = logging.getLoggerWe securely initialize API keys for Tavily and Google Gemini by prompting users only if they’re not already set in the environment, ensuring safe and repeatable access to external services. It also configures a standardized logging setup using Python’s logging module, which helps monitor execution flow and capture debug or error messages throughout the notebook. from langchain_community.retrievers import TavilySearchAPIRetriever from langchain_community.vectorstores import Chroma from langchain_core.documents import Document from langchain_core.output_parsers import StrOutputParser, JsonOutputParser from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate from langchain_core.runnables import RunnablePassthrough, RunnableLambda from langchain_google_genai import ChatGoogleGenerativeAI, GoogleGenerativeAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains.summarize import load_summarize_chain from langchain.memory import ConversationBufferMemory We import key components from the LangChain ecosystem and its integrations. It brings in the TavilySearchAPIRetriever for real-time web search, Chroma for vector storage, and GoogleGenerativeAI modules for chat and embedding models. Core LangChain modules like ChatPromptTemplate, RunnableLambda, ConversationBufferMemory, and output parsers enable flexible prompt construction, memory handling, and pipeline execution. class SearchQueryError: """Exception raised for errors in the search query.""" pass def format_docs: formatted_content =for i, doc in enumerate: metadata = doc.metadata source = metadata.gettitle = metadata.getscore = metadata.getformatted_content.appendreturn "nn".joinWe define two essential components for search and document handling. The SearchQueryError class creates a custom exception to manage invalid or failed search queries gracefully. The format_docs function processes a list of retrieved documents by extracting metadata such as title, source, and relevance score and formatting them into a clean, readable string. class SearchResultsParser: def parse: try: if isinstance: import re import json json_match = re.searchif json_match: json_str = json_match.groupreturn json.loadsreturn {"answer": text, "sources":, "confidence": 0.5} elif hasattr: return {"answer": text.content, "sources":, "confidence": 0.5} else: return {"answer": str, "sources":, "confidence": 0.5} except Exception as e: logger.warningreturn {"answer": str, "sources":, "confidence": 0.5} The SearchResultsParser class provides a robust method for extracting structured information from LLM responses. It attempts to parse a JSON-like string from the model output, returning to a plain text response format if parsing fails. It gracefully handles string outputs and message objects, ensuring consistent downstream processing. In case of errors, it logs a warning and returns a fallback response containing the raw answer, empty sources, and a default confidence score, enhancing the system’s fault tolerance. class EnhancedTavilyRetriever: def __init__: self.api_key = api_key self.max_results = max_results self.search_depth = search_depth self.include_domains = include_domains orself.exclude_domains = exclude_domains orself.retriever = self._create_retrieverself.previous_searches =def _create_retriever: try: return TavilySearchAPIRetrieverexcept Exception as e: logger.errorraise def invoke: if not query or not query.strip: raise SearchQueryErrortry: start_time = time.timeresults = self.retriever.invokeend_time = time.timesearch_record = { "timestamp": datetime.now.isoformat, "query": query, "num_results": len, "response_time": end_time - start_time } self.previous_searches.appendreturn results except Exception as e: logger.errorraise SearchQueryError}") def get_search_history: return self.previous_searches The EnhancedTavilyRetriever class is a custom wrapper around the TavilySearchAPIRetriever, adding greater flexibility, control, and traceability to search operations. It supports advanced features like limiting search depth, domain inclusion/exclusion filters, and configurable result counts. The invoke method performs web searches and tracks each query’s metadata, storing it for later analysis. class SearchCache: def __init__: self.embedding_function = GoogleGenerativeAIEmbeddingsself.vector_store = None self.text_splitter = RecursiveCharacterTextSplitterdef add_documents: if not documents: return try: if self.vector_store is None: self.vector_store = Chroma.from_documentselse: self.vector_store.add_documentsexcept Exception as e: logger.errordef search: if self.vector_store is None: returntry: return self.vector_store.similarity_searchexcept Exception as e: logger.errorreturnThe SearchCache class implements a semantic caching layer that stores and retrieves documents using vector embeddings for efficient similarity search. It uses GoogleGenerativeAIEmbeddings to convert documents into dense vectors and stores them in a Chroma vector database. The add_documents method initializes or updates the vector store, while the search method enables fast retrieval of the most relevant cached documents based on semantic similarity. This reduces redundant API calls and improves response times for repeated or related queries, serving as a lightweight hybrid memory layer in the AI assistant pipeline. search_cache = SearchCacheenhanced_retriever = EnhancedTavilyRetrievermemory = ConversationBufferMemorysystem_template = """You are a research assistant that provides accurate answers based on the search results provided. Follow these guidelines: 1. Only use the context provided to answer the question 2. If the context doesn't contain the answer, say "I don't have sufficient information to answer this question." 3. Cite your sources by referencing the document numbers 4. Don't make up information 5. Keep the answer concise but complete Context: {context} Chat History: {chat_history} """ system_message = SystemMessagePromptTemplate.from_templatehuman_template = "Question: {question}" human_message = HumanMessagePromptTemplate.from_templateprompt = ChatPromptTemplate.from_messagesWe initialize the core components of the AI assistant: a semantic SearchCache, the EnhancedTavilyRetriever for web-based querying, and a ConversationBufferMemory to retain chat history across turns. It also defines a structured prompt using ChatPromptTemplate, guiding the LLM to act as a research assistant. The prompt enforces strict rules for factual accuracy, context usage, source citation, and concise answering, ensuring reliable and grounded responses. def get_llm: try: return ChatGoogleGenerativeAIexcept Exception as e: logger.errorraise output_parser = SearchResultsParserWe define the get_llm function, which initializes a Google Gemini language model with configurable parameters such as model name, temperature, and decoding settings. It ensures robustness with error handling for failed model initialization. An instance of SearchResultsParser is also created to standardize and structure the LLM’s raw responses, enabling consistent downstream processing of answers and metadata. def plot_search_metrics: if not search_history: printreturn df = pd.DataFrameplt.figure) plt.subplotplt.plot), df, marker='o') plt.titleplt.xlabelplt.ylabel') plt.gridplt.subplotplt.bar), df) plt.titleplt.xlabelplt.ylabelplt.gridplt.tight_layoutplt.showThe plot_search_metrics function visualizes performance trends from past queries using Matplotlib. It converts the search history into a DataFrame and plots two subgraphs: one showing response time per search and the other displaying the number of results returned. This aids in analyzing the system’s efficiency and search quality over time, helping developers fine-tune the retriever or identify bottlenecks in real-world usage. def retrieve_with_fallback: cached_results = search_cache.searchif cached_results: logger.info} documents from cache") return cached_results logger.infosearch_results = enhanced_retriever.invokesearch_cache.add_documentsreturn search_results def summarize_documents: llm = get_llmsummarize_prompt = ChatPromptTemplate.from_templatechain =, "query": lambda _: query} | summarize_prompt | llm | StrOutputParser) return chain.invokeThese two functions enhance the assistant’s intelligence and efficiency. The retrieve_with_fallback function implements a hybrid retrieval mechanism: it first attempts to fetch semantically relevant documents from the local Chroma cache and, if unsuccessful, falls back to a real-time Tavily web search, caching the new results for future use. Meanwhile, summarize_documents leverages a Gemini LLM to generate concise summaries from retrieved documents, guided by a structured prompt that ensures relevance to the query. Together, they enable low-latency, informative, and context-aware responses. def advanced_chain: llm = get_llmif query_engine == "enhanced": retriever = lambda query: retrieve_with_fallbackelse: retriever = enhanced_retriever.invoke def chain_with_history: query = input_dictchat_history = memory.load_memory_variablesif include_history elsedocs = retrievercontext = format_docsresult = prompt.invokememory.save_contextreturn llm.invokereturn RunnableLambda| StrOutputParserThe advanced_chain function defines a modular, end-to-end reasoning workflow for answering user queries using cached or real-time search. It initializes the specified Gemini model, selects the retrieval strategy, constructs a response pipeline incorporating chat history, formats documents into context, and prompts the LLM using a system-guided template. The chain also logs the interaction in memory and returns the final answer, parsed into clean text. This design enables flexible experimentation with models and retrieval strategies while maintaining conversation coherence. qa_chain = advanced_chaindef analyze_query: llm = get_llmanalysis_prompt = ChatPromptTemplate.from_template3. Key entities mentioned 4. Query typeQuery: {query} Return the analysis in JSON format with the following structure: {{ "topic": "main topic", "sentiment": "sentiment", "entities":, "type": "query type" }} """ ) chain = analysis_prompt | llm | output_parser return chain.invokeprintprintquery = "what year was breath of the wild released and what was its reception?" printWe initialize the final components of the intelligent assistant. qa_chain is the assembled reasoning pipeline ready to process user queries using retrieval, memory, and Gemini-based response generation. The analyze_query function performs a lightweight semantic analysis on a query, extracting the main topic, sentiment, entities, and query type using the Gemini model and a structured JSON prompt. The example query, about Breath of the Wild’s release and reception, showcases how the assistant is triggered and prepared for full-stack inference and semantic interpretation. The printed heading marks the start of interactive execution. try: printanswer = qa_chain.invokeprintprintprinttry: query_analysis = analyze_queryprintprint) except Exception as e: print: {e}") except Exception as e: printhistory = enhanced_retriever.get_search_historyprintfor i, h in enumerate: printprintspecialized_retriever = EnhancedTavilyRetrievertry: specialized_results = specialized_retriever.invokeprint} specialized results") summary = summarize_documentsprintprintexcept Exception as e: printprintplot_search_metricsWe demonstrate the complete pipeline in action. It performs a search using the qa_chain, displays the generated answer, and then analyzes the query for sentiment, topic, entities, and type. It also retrieves and prints each query’s search history, response time, and result count. Also, it runs a domain-filtered search focused on Nintendo-related sites, summarizes the results, and visualizes search performance using plot_search_metrics, offering a comprehensive view of the assistant’s capabilities in real-time use. In conclusion, following this tutorial gives users a comprehensive blueprint for creating a highly capable, context-aware, and scalable RAG system that bridges real-time web intelligence with conversational AI. The Tavily Search API lets users directly pull fresh and relevant content from the web. The Gemini LLM adds robust reasoning and summarization capabilities, while LangChain’s abstraction layer allows seamless orchestration between memory, embeddings, and model outputs. The implementation includes advanced features such as domain-specific filtering, query analysis, and fallback strategies using a semantic vector cache built with Chroma and GoogleGenerativeAIEmbeddings. Also, structured logging, error handling, and analytics dashboards provide transparency and diagnostics for real-world deployment. Check out the Colab Notebook. All credit for this research goes to the researchers of this project. Also, feel free to follow us on Twitter and don’t forget to join our 90k+ ML SubReddit. Asif RazzaqWebsite |  + postsBioAsif Razzaq is the CEO of Marktechpost Media Inc.. As a visionary entrepreneur and engineer, Asif is committed to harnessing the potential of Artificial Intelligence for social good. His most recent endeavor is the launch of an Artificial Intelligence Media Platform, Marktechpost, which stands out for its in-depth coverage of machine learning and deep learning news that is both technically sound and easily understandable by a wide audience. The platform boasts of over 2 million monthly views, illustrating its popularity among audiences.Asif Razzaqhttps://www.marktechpost.com/author/6flvq/AWS Open-Sources Strands Agents SDK to Simplify AI Agent DevelopmentAsif Razzaqhttps://www.marktechpost.com/author/6flvq/Windsurf Launches SWE-1: A Frontier AI Model Family for End-to-End Software EngineeringAsif Razzaqhttps://www.marktechpost.com/author/6flvq/AI Agents Now Write Code in Parallel: OpenAI Introduces Codex, a Cloud-Based Coding Agent Inside ChatGPTAsif Razzaqhttps://www.marktechpost.com/author/6flvq/A Step-by-Step Guide to Build an Automated Knowledge Graph Pipeline Using LangGraph and NetworkX 🚨 Build GenAI you can trust. ⭐️ Parlant is your open-source engine for controlled, compliant, and purposeful AI conversations — Star Parlant on GitHub! #how #build #powerful #intelligent #questionanswering
    WWW.MARKTECHPOST.COM
    How to Build a Powerful and Intelligent Question-Answering System by Using Tavily Search API, Chroma, Google Gemini LLMs, and the LangChain Framework
    In this tutorial, we demonstrate how to build a powerful and intelligent question-answering system by combining the strengths of Tavily Search API, Chroma, Google Gemini LLMs, and the LangChain framework. The pipeline leverages real-time web search using Tavily, semantic document caching with Chroma vector store, and contextual response generation through the Gemini model. These tools are integrated through LangChain’s modular components, such as RunnableLambda, ChatPromptTemplate, ConversationBufferMemory, and GoogleGenerativeAIEmbeddings. It goes beyond simple Q&A by introducing a hybrid retrieval mechanism that checks for cached embeddings before invoking fresh web searches. The retrieved documents are intelligently formatted, summarized, and passed through a structured LLM prompt, with attention to source attribution, user history, and confidence scoring. Key functions such as advanced prompt engineering, sentiment and entity analysis, and dynamic vector store updates make this pipeline suitable for advanced use cases like research assistance, domain-specific summarization, and intelligent agents. !pip install -qU langchain-community tavily-python langchain-google-genai streamlit matplotlib pandas tiktoken chromadb langchain_core pydantic langchain We install and upgrade a comprehensive set of libraries required to build an advanced AI search assistant. It includes tools for retrieval (tavily-python, chromadb), LLM integration (langchain-google-genai, langchain), data handling (pandas, pydantic), visualization (matplotlib, streamlit), and tokenization (tiktoken). These components form the core foundation for constructing a real-time, context-aware QA system. import os import getpass import pandas as pd import matplotlib.pyplot as plt import numpy as np import json import time from typing import List, Dict, Any, Optional from datetime import datetime We import essential Python libraries used throughout the notebook. It includes standard libraries for environment variables, secure input, time tracking, and data types (os, getpass, time, typing, datetime). Additionally, it brings in core data science tools like pandas, matplotlib, and numpy for data handling, visualization, and numerical computations, as well as json for parsing structured data. if "TAVILY_API_KEY" not in os.environ: os.environ["TAVILY_API_KEY"] = getpass.getpass("Enter Tavily API key: ") if "GOOGLE_API_KEY" not in os.environ: os.environ["GOOGLE_API_KEY"] = getpass.getpass("Enter Google API key: ") import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) We securely initialize API keys for Tavily and Google Gemini by prompting users only if they’re not already set in the environment, ensuring safe and repeatable access to external services. It also configures a standardized logging setup using Python’s logging module, which helps monitor execution flow and capture debug or error messages throughout the notebook. from langchain_community.retrievers import TavilySearchAPIRetriever from langchain_community.vectorstores import Chroma from langchain_core.documents import Document from langchain_core.output_parsers import StrOutputParser, JsonOutputParser from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate from langchain_core.runnables import RunnablePassthrough, RunnableLambda from langchain_google_genai import ChatGoogleGenerativeAI, GoogleGenerativeAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains.summarize import load_summarize_chain from langchain.memory import ConversationBufferMemory We import key components from the LangChain ecosystem and its integrations. It brings in the TavilySearchAPIRetriever for real-time web search, Chroma for vector storage, and GoogleGenerativeAI modules for chat and embedding models. Core LangChain modules like ChatPromptTemplate, RunnableLambda, ConversationBufferMemory, and output parsers enable flexible prompt construction, memory handling, and pipeline execution. class SearchQueryError(Exception): """Exception raised for errors in the search query.""" pass def format_docs(docs): formatted_content = [] for i, doc in enumerate(docs): metadata = doc.metadata source = metadata.get('source', 'Unknown source') title = metadata.get('title', 'Untitled') score = metadata.get('score', 0) formatted_content.append( f"Document {i+1} [Score: {score:.2f}]:n" f"Title: {title}n" f"Source: {source}n" f"Content: {doc.page_content}n" ) return "nn".join(formatted_content) We define two essential components for search and document handling. The SearchQueryError class creates a custom exception to manage invalid or failed search queries gracefully. The format_docs function processes a list of retrieved documents by extracting metadata such as title, source, and relevance score and formatting them into a clean, readable string. class SearchResultsParser: def parse(self, text): try: if isinstance(text, str): import re import json json_match = re.search(r'{.*}', text, re.DOTALL) if json_match: json_str = json_match.group(0) return json.loads(json_str) return {"answer": text, "sources": [], "confidence": 0.5} elif hasattr(text, 'content'): return {"answer": text.content, "sources": [], "confidence": 0.5} else: return {"answer": str(text), "sources": [], "confidence": 0.5} except Exception as e: logger.warning(f"Failed to parse JSON: {e}") return {"answer": str(text), "sources": [], "confidence": 0.5} The SearchResultsParser class provides a robust method for extracting structured information from LLM responses. It attempts to parse a JSON-like string from the model output, returning to a plain text response format if parsing fails. It gracefully handles string outputs and message objects, ensuring consistent downstream processing. In case of errors, it logs a warning and returns a fallback response containing the raw answer, empty sources, and a default confidence score, enhancing the system’s fault tolerance. class EnhancedTavilyRetriever: def __init__(self, api_key=None, max_results=5, search_depth="advanced", include_domains=None, exclude_domains=None): self.api_key = api_key self.max_results = max_results self.search_depth = search_depth self.include_domains = include_domains or [] self.exclude_domains = exclude_domains or [] self.retriever = self._create_retriever() self.previous_searches = [] def _create_retriever(self): try: return TavilySearchAPIRetriever( api_key=self.api_key, k=self.max_results, search_depth=self.search_depth, include_domains=self.include_domains, exclude_domains=self.exclude_domains ) except Exception as e: logger.error(f"Failed to create Tavily retriever: {e}") raise def invoke(self, query, **kwargs): if not query or not query.strip(): raise SearchQueryError("Empty search query") try: start_time = time.time() results = self.retriever.invoke(query, **kwargs) end_time = time.time() search_record = { "timestamp": datetime.now().isoformat(), "query": query, "num_results": len(results), "response_time": end_time - start_time } self.previous_searches.append(search_record) return results except Exception as e: logger.error(f"Search failed: {e}") raise SearchQueryError(f"Failed to perform search: {str(e)}") def get_search_history(self): return self.previous_searches The EnhancedTavilyRetriever class is a custom wrapper around the TavilySearchAPIRetriever, adding greater flexibility, control, and traceability to search operations. It supports advanced features like limiting search depth, domain inclusion/exclusion filters, and configurable result counts. The invoke method performs web searches and tracks each query’s metadata (timestamp, response time, and result count), storing it for later analysis. class SearchCache: def __init__(self): self.embedding_function = GoogleGenerativeAIEmbeddings(model="models/embedding-001") self.vector_store = None self.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) def add_documents(self, documents): if not documents: return try: if self.vector_store is None: self.vector_store = Chroma.from_documents( documents=documents, embedding=self.embedding_function ) else: self.vector_store.add_documents(documents) except Exception as e: logger.error(f"Failed to add documents to cache: {e}") def search(self, query, k=3): if self.vector_store is None: return [] try: return self.vector_store.similarity_search(query, k=k) except Exception as e: logger.error(f"Vector search failed: {e}") return [] The SearchCache class implements a semantic caching layer that stores and retrieves documents using vector embeddings for efficient similarity search. It uses GoogleGenerativeAIEmbeddings to convert documents into dense vectors and stores them in a Chroma vector database. The add_documents method initializes or updates the vector store, while the search method enables fast retrieval of the most relevant cached documents based on semantic similarity. This reduces redundant API calls and improves response times for repeated or related queries, serving as a lightweight hybrid memory layer in the AI assistant pipeline. search_cache = SearchCache() enhanced_retriever = EnhancedTavilyRetriever(max_results=5) memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) system_template = """You are a research assistant that provides accurate answers based on the search results provided. Follow these guidelines: 1. Only use the context provided to answer the question 2. If the context doesn't contain the answer, say "I don't have sufficient information to answer this question." 3. Cite your sources by referencing the document numbers 4. Don't make up information 5. Keep the answer concise but complete Context: {context} Chat History: {chat_history} """ system_message = SystemMessagePromptTemplate.from_template(system_template) human_template = "Question: {question}" human_message = HumanMessagePromptTemplate.from_template(human_template) prompt = ChatPromptTemplate.from_messages([system_message, human_message]) We initialize the core components of the AI assistant: a semantic SearchCache, the EnhancedTavilyRetriever for web-based querying, and a ConversationBufferMemory to retain chat history across turns. It also defines a structured prompt using ChatPromptTemplate, guiding the LLM to act as a research assistant. The prompt enforces strict rules for factual accuracy, context usage, source citation, and concise answering, ensuring reliable and grounded responses. def get_llm(model_name="gemini-2.0-flash-lite", temperature=0.2, response_mode="json"): try: return ChatGoogleGenerativeAI( model=model_name, temperature=temperature, convert_system_message_to_human=True, top_p=0.95, top_k=40, max_output_tokens=2048 ) except Exception as e: logger.error(f"Failed to initialize LLM: {e}") raise output_parser = SearchResultsParser() We define the get_llm function, which initializes a Google Gemini language model with configurable parameters such as model name, temperature, and decoding settings (e.g., top_p, top_k, and max tokens). It ensures robustness with error handling for failed model initialization. An instance of SearchResultsParser is also created to standardize and structure the LLM’s raw responses, enabling consistent downstream processing of answers and metadata. def plot_search_metrics(search_history): if not search_history: print("No search history available") return df = pd.DataFrame(search_history) plt.figure(figsize=(12, 6)) plt.subplot(1, 2, 1) plt.plot(range(len(df)), df['response_time'], marker='o') plt.title('Search Response Times') plt.xlabel('Search Index') plt.ylabel('Time (seconds)') plt.grid(True) plt.subplot(1, 2, 2) plt.bar(range(len(df)), df['num_results']) plt.title('Number of Results per Search') plt.xlabel('Search Index') plt.ylabel('Number of Results') plt.grid(True) plt.tight_layout() plt.show() The plot_search_metrics function visualizes performance trends from past queries using Matplotlib. It converts the search history into a DataFrame and plots two subgraphs: one showing response time per search and the other displaying the number of results returned. This aids in analyzing the system’s efficiency and search quality over time, helping developers fine-tune the retriever or identify bottlenecks in real-world usage. def retrieve_with_fallback(query): cached_results = search_cache.search(query) if cached_results: logger.info(f"Retrieved {len(cached_results)} documents from cache") return cached_results logger.info("No cache hit, performing web search") search_results = enhanced_retriever.invoke(query) search_cache.add_documents(search_results) return search_results def summarize_documents(documents, query): llm = get_llm(temperature=0) summarize_prompt = ChatPromptTemplate.from_template( """Create a concise summary of the following documents related to this query: {query} {documents} Provide a comprehensive summary that addresses the key points relevant to the query. """ ) chain = ( {"documents": lambda docs: format_docs(docs), "query": lambda _: query} | summarize_prompt | llm | StrOutputParser() ) return chain.invoke(documents) These two functions enhance the assistant’s intelligence and efficiency. The retrieve_with_fallback function implements a hybrid retrieval mechanism: it first attempts to fetch semantically relevant documents from the local Chroma cache and, if unsuccessful, falls back to a real-time Tavily web search, caching the new results for future use. Meanwhile, summarize_documents leverages a Gemini LLM to generate concise summaries from retrieved documents, guided by a structured prompt that ensures relevance to the query. Together, they enable low-latency, informative, and context-aware responses. def advanced_chain(query_engine="enhanced", model="gemini-1.5-pro", include_history=True): llm = get_llm(model_name=model) if query_engine == "enhanced": retriever = lambda query: retrieve_with_fallback(query) else: retriever = enhanced_retriever.invoke def chain_with_history(input_dict): query = input_dict["question"] chat_history = memory.load_memory_variables({})["chat_history"] if include_history else [] docs = retriever(query) context = format_docs(docs) result = prompt.invoke({ "context": context, "question": query, "chat_history": chat_history }) memory.save_context({"input": query}, {"output": result.content}) return llm.invoke(result) return RunnableLambda(chain_with_history) | StrOutputParser() The advanced_chain function defines a modular, end-to-end reasoning workflow for answering user queries using cached or real-time search. It initializes the specified Gemini model, selects the retrieval strategy (cached fallback or direct search), constructs a response pipeline incorporating chat history (if enabled), formats documents into context, and prompts the LLM using a system-guided template. The chain also logs the interaction in memory and returns the final answer, parsed into clean text. This design enables flexible experimentation with models and retrieval strategies while maintaining conversation coherence. qa_chain = advanced_chain() def analyze_query(query): llm = get_llm(temperature=0) analysis_prompt = ChatPromptTemplate.from_template( """Analyze the following query and provide: 1. Main topic 2. Sentiment (positive, negative, neutral) 3. Key entities mentioned 4. Query type (factual, opinion, how-to, etc.) Query: {query} Return the analysis in JSON format with the following structure: {{ "topic": "main topic", "sentiment": "sentiment", "entities": ["entity1", "entity2"], "type": "query type" }} """ ) chain = analysis_prompt | llm | output_parser return chain.invoke({"query": query}) print("Advanced Tavily-Gemini Implementation") print("="*50) query = "what year was breath of the wild released and what was its reception?" print(f"Query: {query}") We initialize the final components of the intelligent assistant. qa_chain is the assembled reasoning pipeline ready to process user queries using retrieval, memory, and Gemini-based response generation. The analyze_query function performs a lightweight semantic analysis on a query, extracting the main topic, sentiment, entities, and query type using the Gemini model and a structured JSON prompt. The example query, about Breath of the Wild’s release and reception, showcases how the assistant is triggered and prepared for full-stack inference and semantic interpretation. The printed heading marks the start of interactive execution. try: print("nSearching for answer...") answer = qa_chain.invoke({"question": query}) print("nAnswer:") print(answer) print("nAnalyzing query...") try: query_analysis = analyze_query(query) print("nQuery Analysis:") print(json.dumps(query_analysis, indent=2)) except Exception as e: print(f"Query analysis error (non-critical): {e}") except Exception as e: print(f"Error in search: {e}") history = enhanced_retriever.get_search_history() print("nSearch History:") for i, h in enumerate(history): print(f"{i+1}. Query: {h['query']} - Results: {h['num_results']} - Time: {h['response_time']:.2f}s") print("nAdvanced search with domain filtering:") specialized_retriever = EnhancedTavilyRetriever( max_results=3, search_depth="advanced", include_domains=["nintendo.com", "zelda.com"], exclude_domains=["reddit.com", "twitter.com"] ) try: specialized_results = specialized_retriever.invoke("breath of the wild sales") print(f"Found {len(specialized_results)} specialized results") summary = summarize_documents(specialized_results, "breath of the wild sales") print("nSummary of specialized results:") print(summary) except Exception as e: print(f"Error in specialized search: {e}") print("nSearch Metrics:") plot_search_metrics(history) We demonstrate the complete pipeline in action. It performs a search using the qa_chain, displays the generated answer, and then analyzes the query for sentiment, topic, entities, and type. It also retrieves and prints each query’s search history, response time, and result count. Also, it runs a domain-filtered search focused on Nintendo-related sites, summarizes the results, and visualizes search performance using plot_search_metrics, offering a comprehensive view of the assistant’s capabilities in real-time use. In conclusion, following this tutorial gives users a comprehensive blueprint for creating a highly capable, context-aware, and scalable RAG system that bridges real-time web intelligence with conversational AI. The Tavily Search API lets users directly pull fresh and relevant content from the web. The Gemini LLM adds robust reasoning and summarization capabilities, while LangChain’s abstraction layer allows seamless orchestration between memory, embeddings, and model outputs. The implementation includes advanced features such as domain-specific filtering, query analysis (sentiment, topic, and entity extraction), and fallback strategies using a semantic vector cache built with Chroma and GoogleGenerativeAIEmbeddings. Also, structured logging, error handling, and analytics dashboards provide transparency and diagnostics for real-world deployment. Check out the Colab Notebook. All credit for this research goes to the researchers of this project. Also, feel free to follow us on Twitter and don’t forget to join our 90k+ ML SubReddit. Asif RazzaqWebsite |  + postsBioAsif Razzaq is the CEO of Marktechpost Media Inc.. As a visionary entrepreneur and engineer, Asif is committed to harnessing the potential of Artificial Intelligence for social good. His most recent endeavor is the launch of an Artificial Intelligence Media Platform, Marktechpost, which stands out for its in-depth coverage of machine learning and deep learning news that is both technically sound and easily understandable by a wide audience. The platform boasts of over 2 million monthly views, illustrating its popularity among audiences.Asif Razzaqhttps://www.marktechpost.com/author/6flvq/AWS Open-Sources Strands Agents SDK to Simplify AI Agent DevelopmentAsif Razzaqhttps://www.marktechpost.com/author/6flvq/Windsurf Launches SWE-1: A Frontier AI Model Family for End-to-End Software EngineeringAsif Razzaqhttps://www.marktechpost.com/author/6flvq/AI Agents Now Write Code in Parallel: OpenAI Introduces Codex, a Cloud-Based Coding Agent Inside ChatGPTAsif Razzaqhttps://www.marktechpost.com/author/6flvq/A Step-by-Step Guide to Build an Automated Knowledge Graph Pipeline Using LangGraph and NetworkX 🚨 Build GenAI you can trust. ⭐️ Parlant is your open-source engine for controlled, compliant, and purposeful AI conversations — Star Parlant on GitHub! (Promoted)
    0 Kommentare 0 Anteile
  • ‘GTA 6’ Delay: Take-Two Chief Strauss Zelnick Breaks Down Rockstar’s Decision to Shift Game to Next Year, Industry Price Increases

    Take-Two Interactive reported its latest earnings Thursday, which included a writedown of more than billion. But despite that hit, the biggest news for the company still came out nearly two weeks ahead of the financial results: the publisher’s highly anticipated Rockstar Games-developed “Grand Theft Auto 6” would be shifting from a planned fall 2025 release to a May 26, 2026 launch.

    The choice, which was announced May 2, was made before Take-Two revealed these full fiscal 2025 resultsand projections for its Fiscal 2026, but the company has not disclosed exactly at what point Rockstar decided “GTA 6” would need to be moved. As of February, the company had still been publicly eyeing that fall window.

    Related Stories

    “So we don’t talk about when we make decisions around here,” Take-Two chairman and CEO Strauss Zelnick told Variety Thursday ahead of the company’s earnings call. “And obviously, the net bookings that are expected for Fiscal ’26 are lower without the release of ‘GTA 6,’ that goes without saying. But we haven’t actually parsed what the specific felt is, although analysts have speculated. I think the key point to bear in mind is, once again, we’re setting a record, which is what we said we would do. We certainly expect growth in Fiscal ’27. This company is in extraordinarily sound shape and well positioned both for the challenges and opportunities ahead.”

    Popular on Variety

    Wall Street forecast a loss of earnings per shareof 5 cents on billion in revenue for Take-Two’s January-March results, according to analyst consensus data provided by LSEG. On Thursday, Take-Two reported billion in net bookings. GAAP net loss was billion, or per share. That loss included a writedown of billion, though Take-Two did not disclose which division within the company accounted for that large hit and declined to comment when asked.

    For the year-long period between April 1, 2025-March 31, 2026, Take-Two is projecting net bookings between to billion.

    Regarding the potential pricing for “GTA 6,” as well as the rest of Take-Two’s games moving forward, Zelnick said he’s not letting recent moves made by competitors affect what Take-Two decides to do.

    “Well it’s true that some of our competitors have talked about higher prices and variable pricing. The rubric that informs our decision making is that we need and want to deliver way more value than whatever we charge consumers,” Zelnick said. “We think the consumer experiences the intersection of the thing itself. How great is the property with how much you pay for it? I think you know that anecdotally about yourself. We all feel that way. So we’re very mindful that it’s our job to deliver enormous value to consumers. We think we do just that.”

    More to come…
    #gta #delay #taketwo #chief #strauss
    ‘GTA 6’ Delay: Take-Two Chief Strauss Zelnick Breaks Down Rockstar’s Decision to Shift Game to Next Year, Industry Price Increases
    Take-Two Interactive reported its latest earnings Thursday, which included a writedown of more than billion. But despite that hit, the biggest news for the company still came out nearly two weeks ahead of the financial results: the publisher’s highly anticipated Rockstar Games-developed “Grand Theft Auto 6” would be shifting from a planned fall 2025 release to a May 26, 2026 launch. The choice, which was announced May 2, was made before Take-Two revealed these full fiscal 2025 resultsand projections for its Fiscal 2026, but the company has not disclosed exactly at what point Rockstar decided “GTA 6” would need to be moved. As of February, the company had still been publicly eyeing that fall window. Related Stories “So we don’t talk about when we make decisions around here,” Take-Two chairman and CEO Strauss Zelnick told Variety Thursday ahead of the company’s earnings call. “And obviously, the net bookings that are expected for Fiscal ’26 are lower without the release of ‘GTA 6,’ that goes without saying. But we haven’t actually parsed what the specific felt is, although analysts have speculated. I think the key point to bear in mind is, once again, we’re setting a record, which is what we said we would do. We certainly expect growth in Fiscal ’27. This company is in extraordinarily sound shape and well positioned both for the challenges and opportunities ahead.” Popular on Variety Wall Street forecast a loss of earnings per shareof 5 cents on billion in revenue for Take-Two’s January-March results, according to analyst consensus data provided by LSEG. On Thursday, Take-Two reported billion in net bookings. GAAP net loss was billion, or per share. That loss included a writedown of billion, though Take-Two did not disclose which division within the company accounted for that large hit and declined to comment when asked. For the year-long period between April 1, 2025-March 31, 2026, Take-Two is projecting net bookings between to billion. Regarding the potential pricing for “GTA 6,” as well as the rest of Take-Two’s games moving forward, Zelnick said he’s not letting recent moves made by competitors affect what Take-Two decides to do. “Well it’s true that some of our competitors have talked about higher prices and variable pricing. The rubric that informs our decision making is that we need and want to deliver way more value than whatever we charge consumers,” Zelnick said. “We think the consumer experiences the intersection of the thing itself. How great is the property with how much you pay for it? I think you know that anecdotally about yourself. We all feel that way. So we’re very mindful that it’s our job to deliver enormous value to consumers. We think we do just that.” More to come… #gta #delay #taketwo #chief #strauss
    VARIETY.COM
    ‘GTA 6’ Delay: Take-Two Chief Strauss Zelnick Breaks Down Rockstar’s Decision to Shift Game to Next Year, Industry Price Increases
    Take-Two Interactive reported its latest earnings Thursday, which included a writedown of more than $3 billion. But despite that hit, the biggest news for the company still came out nearly two weeks ahead of the financial results: the publisher’s highly anticipated Rockstar Games-developed “Grand Theft Auto 6” would be shifting from a planned fall 2025 release to a May 26, 2026 launch. The choice, which was announced May 2, was made before Take-Two revealed these full fiscal 2025 results (which ran April 1, 2024 -March 31, 2025) and projections for its Fiscal 2026, but the company has not disclosed exactly at what point Rockstar decided “GTA 6” would need to be moved. As of February, the company had still been publicly eyeing that fall window. Related Stories “So we don’t talk about when we make decisions around here,” Take-Two chairman and CEO Strauss Zelnick told Variety Thursday ahead of the company’s earnings call. “And obviously, the net bookings that are expected for Fiscal ’26 are lower without the release of ‘GTA 6,’ that goes without saying. But we haven’t actually parsed what the specific felt is, although analysts have speculated. I think the key point to bear in mind is, once again, we’re setting a record, which is what we said we would do. We certainly expect growth in Fiscal ’27. This company is in extraordinarily sound shape and well positioned both for the challenges and opportunities ahead.” Popular on Variety Wall Street forecast a loss of earnings per share (EPS) of 5 cents on $1.55 billion in revenue for Take-Two’s January-March results, according to analyst consensus data provided by LSEG. On Thursday, Take-Two reported $1.58 billion in net bookings. GAAP net loss was $3.78 billion, or $21.08 per share. That loss included a writedown of $3.55 billion, though Take-Two did not disclose which division within the company accounted for that large hit and declined to comment when asked. For the year-long period between April 1, 2025-March 31, 2026, Take-Two is projecting net bookings between $5.9 to $6 billion. Regarding the potential pricing for “GTA 6,” as well as the rest of Take-Two’s games moving forward, Zelnick said he’s not letting recent moves made by competitors affect what Take-Two decides to do. “Well it’s true that some of our competitors have talked about higher prices and variable pricing. The rubric that informs our decision making is that we need and want to deliver way more value than whatever we charge consumers,” Zelnick said. “We think the consumer experiences the intersection of the thing itself. How great is the property with how much you pay for it? I think you know that anecdotally about yourself. We all feel that way. So we’re very mindful that it’s our job to deliver enormous value to consumers. We think we do just that.” More to come…
    0 Kommentare 0 Anteile
  • #333;">Bizarre iPhone bug causes some audio messages to fail. Here’s why
    Macworld
    Super-weird bugs in Messages are nothing new, but this latest one is a real head-scratcher: If you try to send an audio message with the phrase “Dave and Buster’s,” it won’t work.
    Why would that specific phrasing cause a problem? A coding expert has cracked the case.
    I won’t say “and the reason will shock you,” but if you’re anything like me, you’ll find it interesting.
    First, let me explain what happens when the bug triggers.
    At first, the audio message (“I’m off to eat lunch at Dave and Buster’s,” as an example) appears to send normally.
    It shows up in the Messages thread to the recipient, along with a transcript of the content.
    No problem is flagged.
    It’s at the recipient’s end that we spot the issue.
    Initially the recipient sees the ellipsis icon, indicating that something is being typed or sent… but this carries on, and carries on, and eventually disappears.
    And at this point there is no indication that anything has been sent at all: no message, no message transcript, no message failed notification.
    In fact, if the recipient didn’t happen to have the app open, or had it open but was in a different conversation thread, they never would have known something was supposed to be on the way.
    This bug is new to me, and the first time I heard about it was when it was discussed on Monday in the blog run by Guilherme Rambo, a coding and engineering expert.
    Rambo, in turn, heard about the bug on the Search Engine podcast, which devoted its May 9 episode to the subject.
    Rambo reproduced the bug, guessed the problem must be at the recipient end, then plugged that device into his Mac and started looking at logs.
    And from that point it doesn’t appear to have taken long for him to work out what was going on: iOS’s transcription engine was recognizing the name of the U.S.
    restaurant chain, changing it to the correct corporate branding (“Dave & Buster’s,” with an all-important ampersand), and then passing that into the XHTML code used to send a transcript with the audio message.
    The problem isn’t being caused by the words Dave and Buster’s, but by the ampersand character between them, which has a special purpose in coding and prevents the code from being parsed correctly.



    The phrase “Dave and Buster’s” doesn’t cause a problem in the U.K.
    because iOS doesn’t add an ampersand (or even an apostrophe).David Price / Foundry
    As you can see in the image at the top of this story, a seemingly successfully sent audio iMessage ending with the phrase “Dave & Buster’s” appears as sent but never actually appears on the recipient’s phone.
    After a while, the audio message disappeared from the sender’s phone, and the recipient was completely unaware that the message had ever been sent.
    With that in mind, it’s a short leap to recognize that other brands could cause the same issue—they just haven’t been spotted doing so up to now.
    Rambo notes that “M&Ms” will do the same thing.
    For U.K.
    iPhone owners, in fact, “Dave and Buster’s” doesn’t trigger the bug because that chain is evidently not well enough known here and doesn’t get its ampersand added by autocorrect.

    To reproduce the issue, I had to ask a friend to send me a message about the supermarket chain M&S.
    Sure enough, this caused the hanging ellipsis followed by an unsent message.
    At the time of writing, it seems almost certain that any phrase iOS would recognize as containing an ampersand would cause an audio message to fail, and when I put it like that, it’s surprising the bug hasn’t been more widely reported.



    But here’s what happens when a U.K.
    user tries to send a message about the supermarket chain M&S, complete with ampersand.Karen Haslam / Foundry
    On the plus side, one would imagine it’s a bug that should be easy to patch in an iOS update.
    The transcription feature in Messages simply needs to be told to “escape” special characters so they don’t mess up the parsing process.
    And as Rambo notes, this isn’t a bug with any security vulnerabilities; indeed, it shows Apple’s BlastDoor mechanism working correctly.
    “Many bad parsers would probably accept the incorrectly-formatted XHTML,” he writes, “but that sort of leniency when parsing data formats is often what ends up causing security issues.
    By being pedantic about the formatting, BlastDoor is protecting the recipient from an exploit that would abuse that type of issue.”
    #0066cc;">#bizarre #iphone #bug #causes #some #audio #messages #fail #heres #why #macworldsuperweird #bugs #are #nothing #new #but #this #latest #one #real #headscratcher #you #try #send #message #with #the #phrase #dave #and #busters #wont #workwhy #would #that #specific #phrasing #cause #problem #coding #expert #has #cracked #casei #say #reason #will #shock #youre #anything #like #youll #find #interestingfirst #let #explain #what #happens #when #triggersat #first #off #eat #lunch #example #appears #normallyit #shows #thread #recipient #along #transcript #contentno #flaggedits #recipients #end #spot #issueinitially #sees #ellipsis #icon #indicating #something #being #typed #sent #carries #eventually #disappearsand #point #there #indication #been #all #failed #notificationin #fact #didnt #happen #have #app #open #had #was #different #conversation #they #never #known #supposed #waythis #time #heard #about #discussed #monday #blog #run #guilherme #rambo #engineering #expertrambo #turn #search #engine #podcast #which #devoted #its #may #episode #subjectrambo #reproduced #guessed #must #then #plugged #device #into #his #mac #started #looking #logsand #from #doesnt #appear #taken #long #for #him #work #out #going #ioss #transcription #recognizing #name #usrestaurant #chain #changing #correct #corporate #branding #ampamp #allimportant #ampersand #passing #xhtml #code #used #messagethe #isnt #caused #words #character #between #them #special #purpose #prevents #parsed #correctlythe #ukbecause #ios #add #even #apostrophedavid #price #foundryas #can #see #image #top #story #seemingly #successfully #imessage #ending #actually #phoneafter #while #disappeared #senders #phone #completely #unaware #ever #sentwith #mind #short #leap #recognize #other #brands #could #same #issuethey #just #havent #spotted #doing #nowrambo #notes #mampampms #thingfor #ukiphone #owners #trigger #because #evidently #not #well #enough #here #get #added #autocorrectto #reproduce #issue #ask #friend #supermarket #mampampssure #hanging #followed #unsent #messageat #writing #seems #almost #certain #any #containing #put #surprising #hasnt #more #widely #reportedbut #ukuser #tries #mampamps #complete #ampersandkaren #haslam #foundryon #plus #side #imagine #should #easy #patch #updatethe #feature #simply #needs #told #escape #characters #dont #mess #parsing #processand #security #vulnerabilities #indeed #apples #blastdoor #mechanism #working #correctlymany #bad #parsers #probably #accept #incorrectlyformatted #writes #sort #leniency #data #formats #often #ends #causing #issuesby #pedantic #formatting #protecting #exploit #abuse #type
    Bizarre iPhone bug causes some audio messages to fail. Here’s why
    Macworld Super-weird bugs in Messages are nothing new, but this latest one is a real head-scratcher: If you try to send an audio message with the phrase “Dave and Buster’s,” it won’t work. Why would that specific phrasing cause a problem? A coding expert has cracked the case. I won’t say “and the reason will shock you,” but if you’re anything like me, you’ll find it interesting. First, let me explain what happens when the bug triggers. At first, the audio message (“I’m off to eat lunch at Dave and Buster’s,” as an example) appears to send normally. It shows up in the Messages thread to the recipient, along with a transcript of the content. No problem is flagged. It’s at the recipient’s end that we spot the issue. Initially the recipient sees the ellipsis icon, indicating that something is being typed or sent… but this carries on, and carries on, and eventually disappears. And at this point there is no indication that anything has been sent at all: no message, no message transcript, no message failed notification. In fact, if the recipient didn’t happen to have the app open, or had it open but was in a different conversation thread, they never would have known something was supposed to be on the way. This bug is new to me, and the first time I heard about it was when it was discussed on Monday in the blog run by Guilherme Rambo, a coding and engineering expert. Rambo, in turn, heard about the bug on the Search Engine podcast, which devoted its May 9 episode to the subject. Rambo reproduced the bug, guessed the problem must be at the recipient end, then plugged that device into his Mac and started looking at logs. And from that point it doesn’t appear to have taken long for him to work out what was going on: iOS’s transcription engine was recognizing the name of the U.S. restaurant chain, changing it to the correct corporate branding (“Dave & Buster’s,” with an all-important ampersand), and then passing that into the XHTML code used to send a transcript with the audio message. The problem isn’t being caused by the words Dave and Buster’s, but by the ampersand character between them, which has a special purpose in coding and prevents the code from being parsed correctly. The phrase “Dave and Buster’s” doesn’t cause a problem in the U.K. because iOS doesn’t add an ampersand (or even an apostrophe).David Price / Foundry As you can see in the image at the top of this story, a seemingly successfully sent audio iMessage ending with the phrase “Dave & Buster’s” appears as sent but never actually appears on the recipient’s phone. After a while, the audio message disappeared from the sender’s phone, and the recipient was completely unaware that the message had ever been sent. With that in mind, it’s a short leap to recognize that other brands could cause the same issue—they just haven’t been spotted doing so up to now. Rambo notes that “M&Ms” will do the same thing. For U.K. iPhone owners, in fact, “Dave and Buster’s” doesn’t trigger the bug because that chain is evidently not well enough known here and doesn’t get its ampersand added by autocorrect. To reproduce the issue, I had to ask a friend to send me a message about the supermarket chain M&S. Sure enough, this caused the hanging ellipsis followed by an unsent message. At the time of writing, it seems almost certain that any phrase iOS would recognize as containing an ampersand would cause an audio message to fail, and when I put it like that, it’s surprising the bug hasn’t been more widely reported. But here’s what happens when a U.K. user tries to send a message about the supermarket chain M&S, complete with ampersand.Karen Haslam / Foundry On the plus side, one would imagine it’s a bug that should be easy to patch in an iOS update. The transcription feature in Messages simply needs to be told to “escape” special characters so they don’t mess up the parsing process. And as Rambo notes, this isn’t a bug with any security vulnerabilities; indeed, it shows Apple’s BlastDoor mechanism working correctly. “Many bad parsers would probably accept the incorrectly-formatted XHTML,” he writes, “but that sort of leniency when parsing data formats is often what ends up causing security issues. By being pedantic about the formatting, BlastDoor is protecting the recipient from an exploit that would abuse that type of issue.”
    المصدر: www.macworld.com
    #bizarre #iphone #bug #causes #some #audio #messages #fail #heres #why #macworldsuperweird #bugs #are #nothing #new #but #this #latest #one #real #headscratcher #you #try #send #message #with #the #phrase #dave #and #busters #wont #workwhy #would #that #specific #phrasing #cause #problem #coding #expert #has #cracked #casei #say #reason #will #shock #youre #anything #like #youll #find #interestingfirst #let #explain #what #happens #when #triggersat #first #off #eat #lunch #example #appears #normallyit #shows #thread #recipient #along #transcript #contentno #flaggedits #recipients #end #spot #issueinitially #sees #ellipsis #icon #indicating #something #being #typed #sent #carries #eventually #disappearsand #point #there #indication #been #all #failed #notificationin #fact #didnt #happen #have #app #open #had #was #different #conversation #they #never #known #supposed #waythis #time #heard #about #discussed #monday #blog #run #guilherme #rambo #engineering #expertrambo #turn #search #engine #podcast #which #devoted #its #may #episode #subjectrambo #reproduced #guessed #must #then #plugged #device #into #his #mac #started #looking #logsand #from #doesnt #appear #taken #long #for #him #work #out #going #ioss #transcription #recognizing #name #usrestaurant #chain #changing #correct #corporate #branding #ampamp #allimportant #ampersand #passing #xhtml #code #used #messagethe #isnt #caused #words #character #between #them #special #purpose #prevents #parsed #correctlythe #ukbecause #ios #add #even #apostrophedavid #price #foundryas #can #see #image #top #story #seemingly #successfully #imessage #ending #actually #phoneafter #while #disappeared #senders #phone #completely #unaware #ever #sentwith #mind #short #leap #recognize #other #brands #could #same #issuethey #just #havent #spotted #doing #nowrambo #notes #mampampms #thingfor #ukiphone #owners #trigger #because #evidently #not #well #enough #here #get #added #autocorrectto #reproduce #issue #ask #friend #supermarket #mampampssure #hanging #followed #unsent #messageat #writing #seems #almost #certain #any #containing #put #surprising #hasnt #more #widely #reportedbut #ukuser #tries #mampamps #complete #ampersandkaren #haslam #foundryon #plus #side #imagine #should #easy #patch #updatethe #feature #simply #needs #told #escape #characters #dont #mess #parsing #processand #security #vulnerabilities #indeed #apples #blastdoor #mechanism #working #correctlymany #bad #parsers #probably #accept #incorrectlyformatted #writes #sort #leniency #data #formats #often #ends #causing #issuesby #pedantic #formatting #protecting #exploit #abuse #type
    WWW.MACWORLD.COM
    Bizarre iPhone bug causes some audio messages to fail. Here’s why
    Macworld Super-weird bugs in Messages are nothing new, but this latest one is a real head-scratcher: If you try to send an audio message with the phrase “Dave and Buster’s,” it won’t work. Why would that specific phrasing cause a problem? A coding expert has cracked the case. I won’t say “and the reason will shock you,” but if you’re anything like me, you’ll find it interesting. First, let me explain what happens when the bug triggers. At first, the audio message (“I’m off to eat lunch at Dave and Buster’s,” as an example) appears to send normally. It shows up in the Messages thread to the recipient, along with a transcript of the content. No problem is flagged. It’s at the recipient’s end that we spot the issue. Initially the recipient sees the ellipsis icon, indicating that something is being typed or sent… but this carries on, and carries on, and eventually disappears. And at this point there is no indication that anything has been sent at all: no message, no message transcript, no message failed notification. In fact, if the recipient didn’t happen to have the app open, or had it open but was in a different conversation thread, they never would have known something was supposed to be on the way. This bug is new to me, and the first time I heard about it was when it was discussed on Monday in the blog run by Guilherme Rambo, a coding and engineering expert. Rambo, in turn, heard about the bug on the Search Engine podcast, which devoted its May 9 episode to the subject. Rambo reproduced the bug, guessed the problem must be at the recipient end, then plugged that device into his Mac and started looking at logs. And from that point it doesn’t appear to have taken long for him to work out what was going on: iOS’s transcription engine was recognizing the name of the U.S. restaurant chain, changing it to the correct corporate branding (“Dave & Buster’s,” with an all-important ampersand), and then passing that into the XHTML code used to send a transcript with the audio message. The problem isn’t being caused by the words Dave and Buster’s, but by the ampersand character between them, which has a special purpose in coding and prevents the code from being parsed correctly. The phrase “Dave and Buster’s” doesn’t cause a problem in the U.K. because iOS doesn’t add an ampersand (or even an apostrophe).David Price / Foundry As you can see in the image at the top of this story, a seemingly successfully sent audio iMessage ending with the phrase “Dave & Buster’s” appears as sent but never actually appears on the recipient’s phone. After a while, the audio message disappeared from the sender’s phone, and the recipient was completely unaware that the message had ever been sent. With that in mind, it’s a short leap to recognize that other brands could cause the same issue—they just haven’t been spotted doing so up to now. Rambo notes that “M&Ms” will do the same thing. For U.K. iPhone owners, in fact, “Dave and Buster’s” doesn’t trigger the bug because that chain is evidently not well enough known here and doesn’t get its ampersand added by autocorrect. To reproduce the issue, I had to ask a friend to send me a message about the supermarket chain M&S. Sure enough, this caused the hanging ellipsis followed by an unsent message. At the time of writing, it seems almost certain that any phrase iOS would recognize as containing an ampersand would cause an audio message to fail, and when I put it like that, it’s surprising the bug hasn’t been more widely reported. But here’s what happens when a U.K. user tries to send a message about the supermarket chain M&S, complete with ampersand.Karen Haslam / Foundry On the plus side, one would imagine it’s a bug that should be easy to patch in an iOS update. The transcription feature in Messages simply needs to be told to “escape” special characters so they don’t mess up the parsing process. And as Rambo notes, this isn’t a bug with any security vulnerabilities; indeed, it shows Apple’s BlastDoor mechanism working correctly. “Many bad parsers would probably accept the incorrectly-formatted XHTML,” he writes, “but that sort of leniency when parsing data formats is often what ends up causing security issues. By being pedantic about the formatting, BlastDoor is protecting the recipient from an exploit that would abuse that type of issue.”
    0 Kommentare 0 Anteile