Reference
claudetteclaudette.answer.ai/
Setup
install
pip install -Uq claudette fastcore
setup api key
可以从下面的网址生成
import os
os.environ['ANTHROPIC_API_KEY'] = "..."
structured
import
from claudette import Client, models
from fastcore.utils import *
用别的function也可以import *
from claudette import *
models
models
# output:
['claude-3-opus-20240229',
'claude-3-5-sonnet-20241022',
'claude-3-haiku-20240307',
'claude-3-5-haiku-20241022']
选一个
model = models[1]
cli = Client(model)
定义class,把想要抓取的每个信息放到init里,下面是a,b,c三种data type
class Feature:
"Assign values"
def __init__(self, a: bool,b:str,c:int):
store_attr()
__repr__ = basic_repr()
定义prompt function
def analyze_feature(text,cls=Feature):
prompt = f"""Analyze this description:
<text>
{text}
<text>
Analyze if a is True, give the reason b, and the number of c"""
return text,cli.structured(prompt, cls)[0].__stored_args__
因为class用了store_attr(),所以function里提出dictionary的时候用__stored_args__,如果是正常的class,用__dict__
接下来把df里的每行text都跑一遍
import pandas as pd
from tqdm import tqdm
tqdm.pandas()
df = pd.read_csv('data.csv')
out = df.col.progress_apply(analyze_feature)
out
我试了parallel,但好像不太work,所以就一个一个跑吧。
最终输出的dict list可以直接放到pd.DataFrame里
out_df = pd.DataFrame([o[1] for o in out])
End