185 lines
6.2 KiB
Python
185 lines
6.2 KiB
Python
"""Basic usage example for FastGPT Python SDK."""
|
|
|
|
from fastgpt_client import ChatClient
|
|
from dotenv import load_dotenv
|
|
import os
|
|
|
|
load_dotenv()
|
|
|
|
# Configure your API key and base URL
|
|
API_KEY = os.getenv("API_KEY")
|
|
BASE_URL = os.getenv("BASE_URL")
|
|
|
|
|
|
def simple_chat():
|
|
"""Simple chat completion example."""
|
|
with ChatClient(api_key=API_KEY, base_url=BASE_URL) as client:
|
|
response = client.create_chat_completion(
|
|
messages=[{"role": "user", "content": "Hello! What's AI?"}],
|
|
stream=False
|
|
)
|
|
response.raise_for_status()
|
|
result = response.json()
|
|
|
|
print("Response:", result['choices'][0]['message']['content'])
|
|
|
|
|
|
def streaming_chat():
|
|
"""Streaming chat completion example."""
|
|
import json
|
|
|
|
with ChatClient(api_key=API_KEY, base_url=BASE_URL) as client:
|
|
response = client.create_chat_completion(
|
|
messages=[{"role": "user", "content": "Tell me a short story"}],
|
|
stream=True
|
|
)
|
|
|
|
print("Streaming response: ", end="")
|
|
for line in response.iter_lines():
|
|
if line.startswith("data:"):
|
|
data = line[5:].strip()
|
|
if data and data != "[DONE]":
|
|
chunk = json.loads(data)
|
|
if "choices" in chunk and chunk["choices"]:
|
|
delta = chunk["choices"][0].get("delta", {})
|
|
content = delta.get("content", "")
|
|
if content:
|
|
print(content, end="", flush=True)
|
|
print()
|
|
|
|
|
|
def chat_with_context():
|
|
"""Chat with context using chatId example."""
|
|
with ChatClient(api_key=API_KEY, base_url=BASE_URL) as client:
|
|
chat_id = os.getenv("CHAT_ID")
|
|
|
|
# First message
|
|
print("User: What's AI?")
|
|
response = client.create_chat_completion(
|
|
messages=[{"role": "user", "content": "What's AI?"}],
|
|
chatId=chat_id,
|
|
stream=False
|
|
)
|
|
response.raise_for_status()
|
|
result = response.json()
|
|
print(f"AI: {result['choices'][0]['message']['content']}\n")
|
|
|
|
# Second message (continues the conversation)
|
|
print("User: Tell me more about it")
|
|
response = client.create_chat_completion(
|
|
messages=[{"role": "user", "content": "Tell me more about it"}],
|
|
chatId=chat_id, # Same chatId maintains context
|
|
stream=False
|
|
)
|
|
response.raise_for_status()
|
|
result = response.json()
|
|
print(f"AI: {result['choices'][0]['message']['content']}")
|
|
|
|
|
|
def get_histories():
|
|
"""Get chat histories example."""
|
|
with ChatClient(api_key=API_KEY, base_url=BASE_URL) as client:
|
|
# You need to replace this with your actual app ID
|
|
app_id = os.getenv("APP_ID")
|
|
|
|
try:
|
|
histories = client.get_chat_histories(
|
|
appId=app_id,
|
|
offset=0,
|
|
pageSize=20,
|
|
source="api"
|
|
)
|
|
histories.raise_for_status()
|
|
data = histories.json()
|
|
|
|
print(f"Total chats: {data['data']['total']}")
|
|
for chat in data['data']['list']:
|
|
print(f" - {chat['title']}: {chat['chatId']}")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
|
|
|
|
def delete_chat_item():
|
|
"""Delete a chat item (record) example."""
|
|
with ChatClient(api_key=API_KEY, base_url=BASE_URL) as client:
|
|
app_id = os.getenv("APP_ID")
|
|
chat_id = os.getenv("CHAT_ID")
|
|
|
|
# First, get the chat records to find a contentId to delete
|
|
try:
|
|
records = client.get_chat_records(
|
|
appId=app_id,
|
|
chatId=chat_id,
|
|
offset=0,
|
|
pageSize=10
|
|
)
|
|
records.raise_for_status()
|
|
data = records.json()
|
|
|
|
if data.get('data', {}).get('list'):
|
|
# Get the first record's dataId as contentId
|
|
content_id = data['data']['list'][0].get('dataId')
|
|
|
|
if content_id:
|
|
print(f"Deleting chat item with contentId: {content_id}")
|
|
print(f"Using appId: {app_id}, chatId: {chat_id}")
|
|
try:
|
|
response = client.delete_chat_record(
|
|
appId=app_id,
|
|
chatId=chat_id,
|
|
contentId=content_id
|
|
)
|
|
print(f"Response status: {response.status_code}")
|
|
print(f"Response text: {response.text}")
|
|
response.raise_for_status()
|
|
print("Chat item deleted successfully!")
|
|
except Exception as delete_error:
|
|
print(f"Delete error details:")
|
|
print(f" Error type: {type(delete_error).__name__}")
|
|
print(f" Error message: {delete_error}")
|
|
# Try to get response details if available
|
|
if hasattr(delete_error, 'response'):
|
|
print(f" Response status: {delete_error.response.status_code}")
|
|
print(f" Response text: {delete_error.response.text}")
|
|
raise
|
|
else:
|
|
print("No contentId found in the record")
|
|
else:
|
|
print("No chat records found to delete")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# print("=== Simple Chat ===")
|
|
# try:
|
|
# simple_chat()
|
|
# except Exception as e:
|
|
# print(f"Error: {e}")
|
|
|
|
# print("\n=== Streaming Chat ===")
|
|
# try:
|
|
# streaming_chat()
|
|
# except Exception as e:
|
|
# print(f"Error: {e}")
|
|
|
|
# print("\n=== Chat with Context ===")
|
|
# try:
|
|
# chat_with_context()
|
|
# except Exception as e:
|
|
# print(f"Error: {e}")
|
|
|
|
# print("\n=== Get Histories ===")
|
|
# try:
|
|
# get_histories()
|
|
# except Exception as e:
|
|
# print(f"Error: {e}")
|
|
|
|
print("\n=== Delete Chat Item ===")
|
|
try:
|
|
delete_chat_item()
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|