Initial commit
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
"""
|
||||
Example usage of the TextGen client.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
from typing import AsyncGenerator
|
||||
|
||||
from .client import TextGenClient
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def chat_example():
|
||||
"""Example of using the chat completion API."""
|
||||
client = TextGenClient()
|
||||
|
||||
try:
|
||||
# Simple chat example
|
||||
messages = [{"role": "user", "content": "Hello! Who are you?"}]
|
||||
|
||||
# Non-streaming response
|
||||
logger.info("Sending chat request (non-streaming)...")
|
||||
response = await client.simple_chat(
|
||||
messages=messages, temperature=0.7, max_tokens=500, mode="instruct"
|
||||
)
|
||||
logger.info(f"Response: {response}")
|
||||
|
||||
# Streaming response
|
||||
logger.info("Sending chat request (streaming)...")
|
||||
stream_response = await client.simple_chat(
|
||||
messages=messages,
|
||||
temperature=0.7,
|
||||
max_tokens=500,
|
||||
stream=True,
|
||||
mode="instruct",
|
||||
)
|
||||
|
||||
# Check if the response is a stream
|
||||
if isinstance(stream_response, AsyncGenerator):
|
||||
logger.info("Streaming response:")
|
||||
async for chunk in stream_response:
|
||||
print(chunk, end="", flush=True)
|
||||
print()
|
||||
else:
|
||||
logger.info(f"Expected stream but got: {stream_response}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error: {str(e)}")
|
||||
finally:
|
||||
await client.close()
|
||||
|
||||
|
||||
async def completion_example():
|
||||
"""Example of using the text completion API."""
|
||||
client = TextGenClient()
|
||||
|
||||
try:
|
||||
prompt = "This is a cake recipe:\n\n1."
|
||||
|
||||
# Non-streaming response
|
||||
logger.info("Sending completion request (non-streaming)...")
|
||||
response = await client.simple_completion(
|
||||
prompt=prompt, temperature=0.7, max_tokens=200
|
||||
)
|
||||
logger.info(f"Response: {response}")
|
||||
|
||||
# Streaming response
|
||||
logger.info("Sending completion request (streaming)...")
|
||||
stream_response = await client.simple_completion(
|
||||
prompt=prompt, temperature=0.7, max_tokens=200, stream=True
|
||||
)
|
||||
|
||||
# Check if the response is a stream
|
||||
if isinstance(stream_response, AsyncGenerator):
|
||||
logger.info("Streaming response:")
|
||||
async for chunk in stream_response:
|
||||
print(chunk, end="", flush=True)
|
||||
print()
|
||||
else:
|
||||
logger.info(f"Expected stream but got: {stream_response}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error: {str(e)}")
|
||||
finally:
|
||||
await client.close()
|
||||
|
||||
|
||||
async def list_models_example():
|
||||
"""Example of listing available models."""
|
||||
client = TextGenClient()
|
||||
|
||||
try:
|
||||
logger.info("Listing available models...")
|
||||
models = await client.list_models()
|
||||
for model in models:
|
||||
logger.info(f"Model: {model.id}")
|
||||
except Exception as e:
|
||||
logger.error(f"Error: {str(e)}")
|
||||
finally:
|
||||
await client.close()
|
||||
|
||||
|
||||
async def main():
|
||||
"""Run all examples."""
|
||||
logger.info("Running TextGen client examples")
|
||||
|
||||
await list_models_example()
|
||||
await chat_example()
|
||||
await completion_example()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user