1 个不稳定版本
新版本 0.1.0 | 2024年8月23日 |
---|
#2 在 #client-key
62KB
1K SLoC
misanthropic
是一个非官方的简单、易于使用的 Anthropic Messages API 客户端。
使用方法
流式传输
// Create a client. `key` will be consumed, zeroized, and stored securely.
let client = Client::new(key)?;
// Request a stream of events or errors. `json!` can be used, a `Request`, or a
// combination of strings and concrete types like `Model`. All Client request
// methods accept anything serializable for maximum flexibility.
let stream = client
// Forces `stream=true` in the request.
.stream(json!({
"model": Model::Sonnet35,
"max_tokens": args.max_tokens,
"temperature": 0,
"system": args.system,
"messages": [
{
"role": Role::User,
"content": specs,
}
],
}))
.await?
// Filter out rate limit and overloaded errors. This is optional but
// recommended for most use cases. The stream will continue when the
// server is ready. Otherwise the stream will include these errors.
.filter_rate_limit()
// Filter out everything but text pieces (and errors).
.text();
// Collect the stream into a single string.
let content: String = stream
.try_collect()
.await?;
单个消息
// Create a client. `key` will be consumed and zeroized.
let client = Client::new(key)?;
// Request a single message. The parameters are the same as the streaming
// example above. If a value is `None` it will be omitted from the request.
// This is less flexible than json! but some may prefer it. A Builder pattern
// is not yet available but is planned to reduce the verbosity.
let message = client
.message(Request {
model: Model::Sonnet35,
messages: vec![Message {
role: Role::User,
content: args.prompt.into(),
}],
max_tokens: 1000.try_into().unwrap(),
metadata: serde_json::Value::Null,
stop_sequences: None,
stream: None,
system: None,
temperature: Some(1.0),
tool_choice: None,
tools: None,
top_k: None,
top_p: None,
})
.await?;
println!("{}", message);
功能
- 异步但不直接依赖 tokio
- 流式响应
- 消息响应
- 支持图像,无论是否有
image
crate - 消息的 Markdown 格式化,包括图像
- 支持提示缓存
- 支持自定义请求和端点
- 支持 Amazon Bedrock
- 支持 Vertex AI
常见问题解答
- 为什么叫
misanthropic
? 真的没有原因。我只是喜欢这个词。Anthropic 既是公司名也是表示“与人类有关”的词。这个包既不是官方的,也与人类无关,所以就叫misanthropic
。 - reqwest 是否依赖 tokio? 在某些平台上是的。
- 能否与 Amazon 或 Vertex 一起使用
misanthropic
? 目前还不能,但它已在路线图上。目前,Client
支持自定义端点,可以直接访问内部的reqwest::Client
来对头部等进行必要的调整。 - 这个包是否经过审计? 没有,但欢迎审计。已尽力确保安全和隐私。API 密钥使用
memsecurity
包在内存中加密,任何包含敏感副本的头信息都被标记为敏感。rustls
是一个可选功能,推荐用于安全。默认开启。
依赖项
~7–19MB
~284K SLoC