Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
基于 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" # 可选
或者在代码中设置:
import chattool
chattool.api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
chattool.api_base = "https://api.example.com/v1"
注:环境变量 OPENAI_API_BASE
优先于 OPENAI_API_BASE_URL
,二者选其一即可。
示例1,多轮对话:
# 初次对话
chat = Chat("Hello, GPT-3.5!")
resp = chat.getresponse()
# 继续对话
chat.user("How are you?")
next_resp = chat.getresponse()
# 人为添加返回内容
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
:
# 编写处理函数
def data2chat(msg):
chat = Chat()
chat.system("你是一个熟练的数字翻译家。")
chat.user(f"请将该数字翻译为罗马数字:{msg}")
# 注意,在函数内获取返回
chat.getresponse()
return chat
checkpoint = "chat.jsonl" # 缓存文件的名称
msgs = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
# 处理数据,如果 checkpoint 存在,则从上次中断处继续
continue_chats = process_chats(msgs, data2chat, checkpoint)
示例3,批量处理数据(异步并行),用不同语言打印 hello,并使用两个协程:
from chattool import async_chat_completion, load_chats, Chat
langs = ["python", "java", "Julia", "C++"]
def data2chat(msg):
chat = Chat()
chat.user("请用语言 %s 打印 hello world" % msg)
# 注意,这里不需要 getresponse 而交给异步处理
return chat
async_chat_completion(langs, chkpoint="async_chat.jsonl", nproc=2, data2chat=data2chat)
chats = load_chats("async_chat.jsonl")
在 Jupyter Notebook 中运行,因其特殊机制,需使用 await
关键字和 wait=True
参数:
await async_chat_completion(langs, chkpoint="async_chat.jsonl", nproc=2, data2chat=data2chat, wait=True)
定义函数:
def add(a: int, b: int) -> int:
"""
This function adds two numbers.
Parameters:
a (int): The first number.
b (int): The second number.
Returns:
int: The sum of the two numbers.
"""
return a + b
def mult(a:int, b:int) -> int:
"""This function multiplies two numbers.
It is a useful calculator!
Args:
a (int): The first number.
b (int): The second number.
Returns:
int: The product of the two numbers.
"""
return a * b
添加函数到 Chat
对象:
from chattool import Chat
chat = Chat("find the value of (23723 * 1322312 ) + 12312")
chat.settools([add, mult])
自动执行工具,根据返回信息判断是否结束,maxturns
默认为 3:
chat.autoresponse(display=True, tool_type='tool_choice', maxturns=3)
使用通用函数 python
from chattool.functioncall import python
chat = Chat("find the value of (23723 * 1322312 ) + 12312")
chat.settools([python])
chat.autoresponse(display=True, tool_type='tool_choice', maxturns=3)
注意,执行模型生成的任意代码有潜在风险。
使用 MIT 协议开源。
3.2.1
,简化异步处理和串行处理的接口,更新子模块名称,避免冲突2.3.0
,支持调用外部工具,异步处理数据,以及模型微调功能2.0.0
开始,更名为 chattool
1.0.0
开始,支持异步处理数据0.6.0
开始,支持 function call 功能0.5.0
开始,支持使用 process_chats
处理数据,借助 msg2chat
函数以及 checkpoint
文件0.4.0
开始,工具维护转至 CubeNLP 组织账号0.3.0
开始不依赖模块 openai.py
,而是直接使用 requests
发送请求
Chat
使用不同 API 密钥0.2.0
改用 Chat
类型作为中心交互对象FAQs
Toolkit for Chat API
We found that chattool demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.