[tools] claudette

Reference claudetteclaudette.answer.ai/ Setup install pip install Uq claudette fastcore setup api key 可以从下面的网址生成 import os os.environ 'ANTHROPIC API KEY' = "..." structured import

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