feat(streamed-generation): Implemented stream generation & example
Streamed generation, changed ConversationResponse (.response to .text)
This commit is contained in:
		@@ -23,7 +23,7 @@ async def main():
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # Print the response.
 | 
			
		||||
    print(response.response)
 | 
			
		||||
    print(response.text)
 | 
			
		||||
 | 
			
		||||
    # The assistant's message is automatically implemented into the conversation object.
 | 
			
		||||
    # Add a new user message.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
# fmt: off
 | 
			
		||||
 | 
			
		||||
from typing import AsyncGenerator
 | 
			
		||||
from copeai_backend import generate, models, conversation
 | 
			
		||||
import asyncio
 | 
			
		||||
 | 
			
		||||
@@ -14,16 +15,24 @@ async def main():
 | 
			
		||||
        storage={}                          # If you need to store some data.
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # Generate a response. This is a non-streamed request, so it will return a ConversationResponse object. This is a blocking call.
 | 
			
		||||
    response: generate.ConversationResponse = await generate.simple_process_text(
 | 
			
		||||
        conversation=conv,          # The conversation object.
 | 
			
		||||
        model=models.GPT_3,     # The model to use. Add your own models to the MODELS dict in models.py.
 | 
			
		||||
    # Generate a response. This is a streamed request, so it will return a GeneratingResponseChunk object.
 | 
			
		||||
    # Then, at the end of the generation, ConversationResponse will be returned.
 | 
			
		||||
    # This is a non-blocking call.
 | 
			
		||||
    response = generate.process_text_streaming(
 | 
			
		||||
        conversation=conv,                  # The conversation object.
 | 
			
		||||
        model=models.GPT_3,                 # The model to use. Add your own models to the MODELS dict in models.py.
 | 
			
		||||
        new_message="Hello, how are you?",  # The message to send.
 | 
			
		||||
        # additional_args={}                  # Additional arguments to send to the API. These are different for each API.
 | 
			
		||||
    )
 | 
			
		||||
        # additional_args={}                # Additional arguments to send to the API. These are different for each API.
 | 
			
		||||
    ) # type: ignore
 | 
			
		||||
 | 
			
		||||
    # Print the response.
 | 
			
		||||
    print(response.response)
 | 
			
		||||
    async for chunk in response:
 | 
			
		||||
        if isinstance(chunk, conversation.GeneratingResponseChunk):
 | 
			
		||||
            print(chunk.text, end="")
 | 
			
		||||
        else:
 | 
			
		||||
            print('\nConversation ended!')
 | 
			
		||||
        
 | 
			
		||||
    # To retrieve the response, you can use the ConversationResponse object, from the last iteration.
 | 
			
		||||
    _response = chunk.text
 | 
			
		||||
 | 
			
		||||
    # The assistant's message is automatically implemented into the conversation object.
 | 
			
		||||
    # Add a new user message.
 | 
			
		||||
@@ -33,10 +42,17 @@ async def main():
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # Generate a response.
 | 
			
		||||
    response: generate.ConversationResponse = await generate.simple_process_text(
 | 
			
		||||
    response: generate.ConversationResponse = generate.process_text_streaming(
 | 
			
		||||
        conversation=conv,
 | 
			
		||||
        model=models.GPT_3,
 | 
			
		||||
        new_message="...",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    async for chunk in response:
 | 
			
		||||
        if isinstance(chunk, conversation.GeneratingResponseChunk):
 | 
			
		||||
            print(chunk.text, end="")
 | 
			
		||||
        else:
 | 
			
		||||
            print('\nConversation ended!')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
asyncio.run(main())
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user