具有函数功能的Anthropic
这个库允许你使用带有类似OpenAI函数的Anthropic Claude模型。
目前还处于非常初期和粗糙的阶段,所以如果你想改进它,请随时贡献!
安装
你可以直接从GitHub安装这个包:
pip install git+https://github.com/mshumer/anthropic_with_functions.git
使用方法
以下是一个基本的使用示例:
from anthropic_function import AnthropicFunction
import json
anthropic_func = AnthropicFunction(api_key="ANTHROPIC_API_KEY", model="claude-2", temperature=0.7, max_tokens_to_sample=500)
# 定义你的函数
def get_current_weather(location, unit="fahrenheit"):
# 获取给定位置的当前天气
weather_info = {
"location": location,
"temperature": "72", # 为示例硬编码
"unit": unit,
"forecast": ["sunny", "windy"], # 为示例硬编码
}
return json.dumps(weather_info)
# 将你的函数添加到AnthropicFunction实例中
anthropic_func.add_function(
"get_current_weather", "获取给定位置的当前天气",
["location: string", "unit: 'celsius' | 'fahrenheit'"])
# 定义对话消息
messages = [{"role": "HUMAN", "content": "今天你好吗?"}, {"role": "AI", "content": "我很好,谢谢你的关心!"}, {"role": "HUMAN", "content": "提醒我一下我刚才问了你什么?"}, {"role": "AI", "content": "你刚才问我,今天你好吗?我回答说,我很好,谢谢你的关心!"}, {"role": "HUMAN", "content": "伦敦的天气怎么样?"}]
# 调用模型(它将返回一个函数或普通消息)
response = anthropic_func.call(messages, model="claude-2", temperature=0.8, max_tokens_to_sample=400)
if response["function"]:
# 解析然后用参数调用函数
function_output = None
# 根据你的函数,编写解析代码来获取函数名和参数
#### 在此处添加解析代码
function_name = 'get_current_weather' # 占位符 -- 替换为你获取函数名的解析代码
function_arguments = {'location': 'london', 'unit': 'celsius'} # 占位符 -- 替换为你获取函数参数的解析代码
# 现在,用参数调用相关函数,将结果作为`function_output`返回
if function_name == 'get_current_weather':
function_output = get_current_weather(location=function_arguments['location'], unit=function_arguments['unit'])
# 描述函数的输出
if function_output is not None:
response = anthropic_func.describe_function_output(function_name, function_arguments, function_output, messages)
print('响应:', response['response'])
else:
print('未找到函数')
print('响应:', response['response'])
贡献
欢迎贡献!请随时提交Pull Request。
一些想法:
- 创建自动函数/参数解析代码,这样用户就不需要自己编写
- 总体上使库达到与OpenAI的函数系统相当的水平
许可证
本项目采用MIT许可证条款授权。