CoolFace
Apppublic

lexlepty/functioncall

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
function_implementations.py76 linesDownload Raw Back to root
1import json2import requests3import smtplib4from email.mime.text import MIMEText5from email.mime.multipart import MIMEMultipart6from duckduckgo_search import DDGS7import os8 9emailkey = os.getenv("EMAIL_KEY")10 11def search_duckduckgo(keywords):12    search_term = " ".join(keywords)13    with DDGS() as ddgs:14        return list(ddgs.text(keywords=search_term, region="cn-zh", safesearch="on", max_results=5))15 16def search_papers(query):17    url = f"https://api.crossref.org/works?query={query}"18    response = requests.get(url)19    if response.status_code == 200:20        data = response.json()21        papers = data['message']['items']22        processed_papers = []23        for paper in papers:24            processed_paper = {25                "标题": paper.get('title', [''])[0],26                "作者": ", ".join([f"{author.get('given', '')} {author.get('family', '')}" for author in paper.get('author', [])]),27                "DOI": paper.get('DOI', ''),28                "ISBN": ", ".join(paper.get('ISBN', [])),29                "摘要": paper.get('abstract', '').replace('<p>', '').replace('</p>', '').replace('<italic>', '').replace('</italic>', '')30            }31            processed_papers.append(processed_paper)32        return processed_papers33    else:34        return []35 36def send_email(to, subject, content):37    try:38        with smtplib.SMTP('106.15.184.28', 8025) as smtp:39            smtp.login("jwt", emailkey)40            message = MIMEMultipart()41            message['From'] = "Me <aixiao@aixiao.xyz>"42            message['To'] = to43            message['Subject'] = subject44            message.attach(MIMEText(content, 'html'))45            smtp.sendmail("aixiao@aixiao.xyz", to, message.as_string())46        return True47    except Exception as e:48        print(f"发送邮件时出错: {str(e)}")49        return False50 51def process_function_call(function_name, function_args):52    if function_name == "search_duckduckgo":53        keywords = function_args.get('keywords', [])54        if not keywords:55            return None56        return search_duckduckgo(keywords)57    elif function_name == "search_papers":58        query = function_args.get('query', '')59        if not query:60            return None61        return search_papers(query)62    elif function_name == "send_email":63        to = function_args.get('to', '')64        subject = function_args.get('subject', '')65        content = function_args.get('content', '')66        if not to or not subject or not content:67            return None68        success = send_email(to, subject, content)69        return {70            "success": success,71            "to": to,72            "subject": subject,73            "content": content74        }75    else:76        return None