Skip to content

Gemini causes 'Event loop is closed' when running inside an async context #748

Description

@asaf

Hi,

This is an attempt to use google-gla:gemini-2.0-flash-exp via streamit in async,

Code below causes RuntimeError: Event loop is closed, same code works just fine for openai:gpt-4o

import asyncio

import streamlit as st
from pydantic_ai import Agent
from pydantic_ai.messages import ModelRequest, UserPromptPart


async def main():
    st.title("Simple chat")

    # Initialize chat history
    if "messages" not in st.session_state:
        st.session_state.messages = []

    # Display chat messages from history on app rerun
    for message in st.session_state.messages:
        part1 = message.parts[0]
        role = ""
        if isinstance(part1, UserPromptPart):
            role = "user"
        with st.chat_message("human" if role == "user" else "ai"):
            st.markdown(message.parts[0].content)

    # Accept user input
    if prompt := st.chat_input("Say something..."):
        # Display user message in chat message container
        st.chat_message("user").markdown(prompt)

        # Add user message to chat history
        st.session_state.messages.append(
            ModelRequest(parts=[UserPromptPart(content=prompt)])
        )

        # Display assistant response in chat message container
        with st.chat_message("assistant"):
            response_container = st.empty()  # Placeholder for streaming response
            agent = Agent(
                "google-gla:gemini-2.0-flash-exp",
                # "openai:gpt-4o", # works!
                # https://ai.pydantic.dev/results/#structured-result-validation
                result_type=str,  # type: ignore
                system_prompt="you are a nice bot",
            )
            result = await agent.run(prompt)
            response_container.markdown(result.data)


if __name__ == "__main__":
    asyncio.run(main())

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugReport that something isn't working, or PR implementing a fixmore infoMore information required

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions