Skip to main content

Toolkit for Chat API

Project description

基于 OpenAI API 的 Chat 对象,支持多轮对话以及异步处理数据等。

安装方法

pip install chattool --upgrade

使用方法

设置密钥和代理链接

通过环境变量设置密钥和代理,比如在 ~/.bashrc 或者 ~/.zshrc 中追加

export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export OPENAI_API_BASE="https://api.example.com/v1"
export OPENAI_API_BASE_URL="https://api.example.com" # 可选

注:环境变量 OPENAI_API_BASE 优先于 OPENAI_API_BASE_URL,二者选其一即可。

示例

示例1,多轮对话:

# 初次对话
chat = Chat("Hello!")
resp = chat.get_response()

# 继续对话
chat.user("How are you?")
next_resp = chat.get_response()

# 人为添加返回内容
chat.user("What's your name?")
chat.assistant("My name is GPT-3.5.")

# 保存对话内容
chat.save("chat.json", mode="w") # 默认为 "a"

# 打印对话历史
chat.print_log()

示例2,批量处理数据(串行),并使用缓存文件 chat.jsonl

# 串行处理(按需保存)
msgs = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
results = []
for m in msgs:
    chat = Chat()
    chat.system("你是一个熟练的数字翻译家。")
    resp = chat.user(f"请将该数字翻译为罗马数字:{m}").get_response()
    results.append(resp.content)
    chat.save("chat.jsonl", mode="a")

示例3,异步并发与流式输出:

import asyncio
from chattool import Chat

async def run():
    # 并发问答
    base = Chat().system("你是一个有用的助手")
    tasks = [base.copy().user(f"请解释:主题 {i}").async_get_response() for i in range(2)]
    responses = await asyncio.gather(*tasks)
    for r in responses:
        print(r.content)

    # 流式输出
    print("流式: ", end="")
    async for chunk in Chat().user("写一首关于春天的短诗").async_get_response_stream():
        if chunk.delta_content:
            print(chunk.delta_content, end="", flush=True)
    print()

asyncio.run(run())

开源协议

使用 MIT 协议开源。

更新日志

  • 当前版本 4.1.0,统一 Chat API(同步/异步/流式),默认环境变量配置,改进重试与调试工具
  • 历史:2.x-3.x 阶段逐步完善异步处理与批量用法
  • 更早版本沿革请参考仓库提交记录

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chattool-4.2.0.tar.gz (68.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chattool-4.2.0-py3-none-any.whl (83.7 kB view details)

Uploaded Python 3

File details

Details for the file chattool-4.2.0.tar.gz.

File metadata

  • Download URL: chattool-4.2.0.tar.gz
  • Upload date:
  • Size: 68.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for chattool-4.2.0.tar.gz
Algorithm Hash digest
SHA256 9cb7924044e1e8f493eea5cbb7ab0bd6eeb477132c903a72738c2d6eb7d94489
MD5 7f8b61a1b008e4f424c7f58818e71b8b
BLAKE2b-256 222e158d39d3db64f3e4d40aacc73b74f5ce948f326e85a7997fdf603a57ef6a

See more details on using hashes here.

File details

Details for the file chattool-4.2.0-py3-none-any.whl.

File metadata

  • Download URL: chattool-4.2.0-py3-none-any.whl
  • Upload date:
  • Size: 83.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.18

File hashes

Hashes for chattool-4.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5446c4eff9ae2ced4f13e1f826ee5431857ee29bf99643a2a4014c6a12a41782
MD5 e954e4e6edc65d6e126f7addd3745d72
BLAKE2b-256 3a47c6013144824bcea153afc7c87beea21232d4b6626708187e50ae903239fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page