316 lines
6.7 KiB
Markdown
316 lines
6.7 KiB
Markdown
# ChatClient
|
|
|
|
The `ChatClient` provides methods for chat completions and conversation management.
|
|
|
|
## Initialization
|
|
|
|
```python
|
|
from fastgpt_client import ChatClient
|
|
|
|
client = ChatClient(
|
|
api_key="fastgpt-xxxxx",
|
|
base_url="http://localhost:3000"
|
|
)
|
|
```
|
|
|
|
## Methods
|
|
|
|
### create_chat_completion
|
|
|
|
Create a chat completion (synchronous or streaming).
|
|
|
|
```python
|
|
client.create_chat_completion(
|
|
messages: list[dict],
|
|
stream: bool = False,
|
|
chatId: str | None = None,
|
|
detail: bool = False,
|
|
variables: dict[str, Any] | None = None,
|
|
responseChatItemId: str | None = None
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `messages` | `list[dict]` | Yes | Array of message objects with `role` and `content` |
|
|
| `stream` | `bool` | No | Whether to stream the response (default: `False`) |
|
|
| `chatId` | `str` | No | Chat ID for conversation context |
|
|
| `detail` | `bool` | No | Whether to return detailed execution data (default: `False`) |
|
|
| `variables` | `dict` | No | Template variables for substitution |
|
|
| `responseChatItemId` | `str` | No | Custom ID for the response message |
|
|
|
|
**Example:**
|
|
|
|
```python
|
|
response = client.create_chat_completion(
|
|
messages=[
|
|
{"role": "user", "content": "Hello!"},
|
|
{"role": "assistant", "content": "Hi there!"},
|
|
{"role": "user", "content": "How are you?"}
|
|
],
|
|
stream=False
|
|
)
|
|
result = response.json()
|
|
print(result['choices'][0]['message']['content'])
|
|
```
|
|
|
|
---
|
|
|
|
### get_chat_histories
|
|
|
|
Get chat histories for an application.
|
|
|
|
```python
|
|
client.get_chat_histories(
|
|
appId: str,
|
|
offset: int = 0,
|
|
pageSize: int = 20,
|
|
source: Literal["api", "online", "share", "test"] = "api"
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `offset` | `int` | No | Offset for pagination (default: `0`) |
|
|
| `pageSize` | `int` | No | Number of records per page (default: `20`) |
|
|
| `source` | `str` | No | Source filter (default: `"api"`) |
|
|
|
|
**Example:**
|
|
|
|
```python
|
|
response = client.get_chat_histories(
|
|
appId="app-123",
|
|
offset=0,
|
|
pageSize=20,
|
|
source="api"
|
|
)
|
|
data = response.json()
|
|
for chat in data['data']['list']:
|
|
print(f"{chat['title']}: {chat['chatId']}")
|
|
```
|
|
|
|
---
|
|
|
|
### get_chat_init
|
|
|
|
Get chat initialization information.
|
|
|
|
```python
|
|
client.get_chat_init(
|
|
appId: str,
|
|
chatId: str
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
|
|
---
|
|
|
|
### get_chat_records
|
|
|
|
Get chat records for a specific chat.
|
|
|
|
```python
|
|
client.get_chat_records(
|
|
appId: str,
|
|
chatId: str,
|
|
offset: int = 0,
|
|
pageSize: int = 10,
|
|
loadCustomFeedbacks: bool = False
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
| `offset` | `int` | No | Offset for pagination (default: `0`) |
|
|
| `pageSize` | `int` | No | Number of records per page (default: `10`) |
|
|
| `loadCustomFeedbacks` | `bool` | No | Whether to load custom feedbacks (default: `False`) |
|
|
|
|
---
|
|
|
|
### get_record_detail
|
|
|
|
Get detailed execution data for a specific record.
|
|
|
|
```python
|
|
client.get_record_detail(
|
|
appId: str,
|
|
chatId: str,
|
|
dataId: str
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
| `dataId` | `str` | Yes | Record ID |
|
|
|
|
---
|
|
|
|
### update_chat_history
|
|
|
|
Update chat history (title or pin status).
|
|
|
|
```python
|
|
client.update_chat_history(
|
|
appId: str,
|
|
chatId: str,
|
|
customTitle: str | None = None,
|
|
top: bool | None = None
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
| `customTitle` | `str` | No | Custom title for the chat |
|
|
| `top` | `bool` | No | Whether to pin the chat |
|
|
|
|
---
|
|
|
|
### delete_chat_history
|
|
|
|
Delete a chat history.
|
|
|
|
```python
|
|
client.delete_chat_history(
|
|
appId: str,
|
|
chatId: str
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
|
|
---
|
|
|
|
### clear_chat_histories
|
|
|
|
Clear all chat histories for an application.
|
|
|
|
```python
|
|
client.clear_chat_histories(
|
|
appId: str
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
|
|
---
|
|
|
|
### delete_chat_record
|
|
|
|
Delete a single chat record.
|
|
|
|
```python
|
|
client.delete_chat_record(
|
|
appId: str,
|
|
chatId: str,
|
|
contentId: str
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
| `contentId` | `str` | Yes | Content ID of the record |
|
|
|
|
---
|
|
|
|
### send_feedback
|
|
|
|
Send feedback for a chat message (like/dislike).
|
|
|
|
```python
|
|
client.send_feedback(
|
|
appId: str,
|
|
chatId: str,
|
|
dataId: str,
|
|
userGoodFeedback: str | None = None,
|
|
userBadFeedback: str | None = None
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
| `dataId` | `str` | Yes | Message ID |
|
|
| `userGoodFeedback` | `str` | No | Positive feedback text |
|
|
| `userBadFeedback` | `str` | No | Negative feedback text |
|
|
|
|
**Example:**
|
|
|
|
```python
|
|
# Like a message
|
|
client.send_feedback(
|
|
appId="app-123",
|
|
chatId="chat-123",
|
|
dataId="msg-123",
|
|
userGoodFeedback="Great answer!"
|
|
)
|
|
|
|
# Dislike a message
|
|
client.send_feedback(
|
|
appId="app-123",
|
|
chatId="chat-123",
|
|
dataId="msg-123",
|
|
userBadFeedback="Not helpful"
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
### get_suggested_questions
|
|
|
|
Get suggested questions based on chat context.
|
|
|
|
```python
|
|
client.get_suggested_questions(
|
|
appId: str,
|
|
chatId: str,
|
|
questionGuide: dict[str, Any] | None = None
|
|
) -> httpx.Response
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `appId` | `str` | Yes | Application ID |
|
|
| `chatId` | `str` | Yes | Chat ID |
|
|
| `questionGuide` | `dict` | No | Custom configuration for question guide |
|