mirror of
				https://github.com/hiyouga/LLaMA-Factory.git
				synced 2024-05-04 01:06:47 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import json
 | 
						|
import os
 | 
						|
from typing import Sequence
 | 
						|
 | 
						|
from openai import OpenAI
 | 
						|
from transformers.utils.versions import require_version
 | 
						|
 | 
						|
 | 
						|
require_version("openai>=1.5.0", "To fix: pip install openai>=1.5.0")
 | 
						|
 | 
						|
 | 
						|
def calculate_gpa(grades: Sequence[str], hours: Sequence[int]) -> float:
 | 
						|
    grade_to_score = {"A": 4, "B": 3, "C": 2}
 | 
						|
    total_score, total_hour = 0, 0
 | 
						|
    for grade, hour in zip(grades, hours):
 | 
						|
        total_score += grade_to_score[grade] * hour
 | 
						|
        total_hour += hour
 | 
						|
    return round(total_score / total_hour, 2)
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    client = OpenAI(
 | 
						|
        api_key="0",
 | 
						|
        base_url="http://localhost:{}/v1".format(os.environ.get("API_PORT", 8000)),
 | 
						|
    )
 | 
						|
    tools = [
 | 
						|
        {
 | 
						|
            "type": "function",
 | 
						|
            "function": {
 | 
						|
                "name": "calculate_gpa",
 | 
						|
                "description": "Calculate the Grade Point Average (GPA) based on grades and credit hours",
 | 
						|
                "parameters": {
 | 
						|
                    "type": "object",
 | 
						|
                    "properties": {
 | 
						|
                        "grades": {"type": "array", "items": {"type": "string"}, "description": "The grades"},
 | 
						|
                        "hours": {"type": "array", "items": {"type": "integer"}, "description": "The credit hours"},
 | 
						|
                    },
 | 
						|
                    "required": ["grades", "hours"],
 | 
						|
                },
 | 
						|
            },
 | 
						|
        }
 | 
						|
    ]
 | 
						|
    tool_map = {"calculate_gpa": calculate_gpa}
 | 
						|
 | 
						|
    messages = []
 | 
						|
    messages.append({"role": "user", "content": "My grades are A, A, B, and C. The credit hours are 3, 4, 3, and 2."})
 | 
						|
    result = client.chat.completions.create(messages=messages, model="test", tools=tools)
 | 
						|
    if result.choices[0].message.tool_calls is None:
 | 
						|
        raise ValueError("Cannot retrieve function call from the response.")
 | 
						|
 | 
						|
    messages.append(result.choices[0].message)
 | 
						|
    tool_call = result.choices[0].message.tool_calls[0].function
 | 
						|
    print(tool_call)
 | 
						|
    # Function(arguments='{"grades": ["A", "A", "B", "C"], "hours": [3, 4, 3, 2]}', name='calculate_gpa')
 | 
						|
    name, arguments = tool_call.name, json.loads(tool_call.arguments)
 | 
						|
    tool_result = tool_map[name](**arguments)
 | 
						|
    messages.append({"role": "tool", "content": json.dumps({"gpa": tool_result}, ensure_ascii=False)})
 | 
						|
    result = client.chat.completions.create(messages=messages, model="test", tools=tools)
 | 
						|
    print(result.choices[0].message.content)
 | 
						|
    # Based on the grades and credit hours you provided, your Grade Point Average (GPA) is 3.42.
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    main()
 |