Carlos Salgado commited on
Commit
9e88eab
1 Parent(s): 0c2a143

add pydantic schema, together example, gitignore

Browse files
Files changed (3) hide show
  1. .gitignore +5 -1
  2. schema.py +130 -0
  3. together_call.py +44 -0
.gitignore CHANGED
@@ -1,3 +1,7 @@
1
  .envrc
2
  .direnv/
3
- flake.*
 
 
 
 
 
1
  .envrc
2
  .direnv/
3
+ flake.lock
4
+ flake.nix
5
+ .env
6
+ .venv
7
+
schema.py ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ from typing import List, Optional
4
+ from pydantic import BaseModel, Field
5
+ from enum import Enum
6
+
7
+ class BimDiscipline(Enum):
8
+ plumbing = 'S - Sanitär'
9
+ network = 'd - Datennetz'
10
+ heating = 'h - Heizung'
11
+ electrical = 'e - Elektro'
12
+ ventilation = 'l - Lüftung'
13
+ architecture = 'a - Architektur'
14
+
15
+ class KeywordChoice(str, Enum):
16
+ three_dimensional_modeling = "3d modeling"
17
+ four_dimensional_simulation = "4d simulation"
18
+ five_dimensional_cost_estimation = "5d cost estimation"
19
+ six_dimensional_lifecycle_management = "6d lifecycle management"
20
+ adoption = "adoptions"
21
+ agile_bim = "agile bim"
22
+ artificial_intelligence = "artificial intelligence"
23
+ automated_code_checking = "automated code checking"
24
+ automation = "automation"
25
+ big_data_analytics = "big data analytics"
26
+ bim_based_estimating = "bim-based estimating"
27
+ bim_execution_plan = "bim execution plan"
28
+ bim_governance = "bim governance"
29
+ bim_integration = "bim integration"
30
+ bim_maturity = "bim maturity"
31
+ bim_objects = "bim objects"
32
+ bim_process = "bim process"
33
+ bim_quality_assurance = "bim quality assurance"
34
+ bim_requirements = "bim requirements"
35
+ bim_server = "bim server"
36
+ bim_standardization = "bim standardization"
37
+ bim_strategy = "bim strategy"
38
+ bim_tools = "bim tools"
39
+ bim_training = "bim training"
40
+ barriers = "barriers"
41
+ benchmarking = "benchmarking"
42
+ building_energy_modeling = "building energy modeling"
43
+ building_life_cycle = "building life cycle"
44
+ building_physics = "building physics"
45
+ building_smartness = "building smartness"
46
+ built_environment = "built environment"
47
+ case_studies = "case studies"
48
+ cloud_computing = "cloud computing"
49
+ collaborative_environments = "collaborative environments"
50
+ communication = "communication"
51
+ computational_design = "computational design"
52
+ cobie = "construction operations building information exchange"
53
+ construction_scheduling = "construction scheduling"
54
+ construction_site_layout = "construction site layout"
55
+ context_awareness = "context awareness"
56
+ contractual_issues = "contractual issues"
57
+ cost_control = "cost control"
58
+ critical_success_factors = "critical success factors"
59
+ digital_fabrication = "digital fabrication"
60
+ digital_twin = "digital twin"
61
+ disaster_response = "disaster response"
62
+ dispute_resolution = "dispute resolution"
63
+ dynamic_scheduling = "dynamic scheduling"
64
+ education = "education"
65
+ electronic_tendering = "electronic tendering"
66
+ empirical_research = "empirical research"
67
+ energy_analysis = "energy analysis"
68
+ environmental_impacts = "environmental impacts"
69
+ facility_management = "facility management"
70
+ fire_safety = "fire safety"
71
+ gis_integration = "gis integration"
72
+ green_buildings = "green buildings"
73
+ health_and_safety = "health and safety"
74
+ historical_preservation = "historical preservation"
75
+ human_behavior = "human behavior"
76
+ industrialized_construction = "industrialized construction"
77
+ information_management = "information management"
78
+ infrastructure_asset_management = "infrastructure asset management"
79
+ interoperability = "interoperability"
80
+ iot_integration = "iot integration"
81
+ knowledge_sharing = "knowledge sharing"
82
+ lean_construction = "lean construction"
83
+ legal_frameworks = "legal frameworks"
84
+ level_of_development = "level of development"
85
+ level_of_detail = "level of detail"
86
+ level_of_information_need = "level of information need"
87
+ lifetime_costs = "lifetime costs"
88
+ linked_data = "linked data"
89
+ machine_learning = "machine learning"
90
+ manufacturing = "manufacturing"
91
+ materials_management = "materials management"
92
+ mobile_applications = "mobile applications"
93
+ multi_criteria_decision_making = "multi-criteria decision making"
94
+ natural_language_processing = "natural language processing"
95
+ networking = "networking"
96
+ open_bim = "open bim"
97
+ organizational_change = "organizational change"
98
+ owner_involvement = "owner involvement"
99
+ parametric_design = "parametric design"
100
+ performance_measurement = "performance measurement"
101
+ pipeline_simulation = "pipeline simulation"
102
+ policy_implications = "policy implications"
103
+ predictive_maintenance = "predictive maintenance"
104
+ product_data_templates = "product data templates"
105
+ public_procurement = "public procurement"
106
+ radio_frequency_identification = "radio frequency identification"
107
+ reality_capture = "reality capture"
108
+ real_time_monitoring = "real-time monitoring"
109
+ reliability_engineering = "reliability engineering"
110
+ resilience = "resilience"
111
+ return_on_investment = "return on investment"
112
+ reverse_logistics = "reverse logistics"
113
+ risk_assessment = "risk assessment"
114
+ robotics = "robotics"
115
+ maintenance_management = "maintenance management"
116
+
117
+ # Define the schema for the output.
118
+ class Metadata(BaseModel):
119
+ title: str = Field(description='Title of the document')
120
+ summary: str = Field(description='One sentence short summary of the document information')
121
+ disciplines: List[str] = Field(
122
+ default_factory=list,
123
+ description='BIM disciplines the document belongs to',
124
+ example=['S - Sanitär', 'D - Datennetz']
125
+ )
126
+ keywords: List[str] = Field(
127
+ default_factory=list,
128
+ description='List of BIM keywords associated with the document',
129
+ example=['3D Modelling', 'Clash detection']
130
+ )
together_call.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import openai
4
+ from pydantic import BaseModel, Field
5
+ from dotenv import load_dotenv
6
+ load_dotenv()
7
+
8
+
9
+ # Create client
10
+ client = openai.OpenAI(
11
+ base_url="https://api.together.xyz/v1",
12
+ api_key=os.environ["TOGETHER_API_KEY"],
13
+ )
14
+
15
+ # Define the schema for the output.
16
+ class User(BaseModel):
17
+ name: str = Field(description="user name")
18
+ address: str = Field(description="address")
19
+
20
+ # Call the LLM with the JSON schema
21
+ chat_completion = client.chat.completions.create(
22
+ model="mistralai/Mixtral-8x7B-Instruct-v0.1",
23
+ response_format={"type": "json_object", "schema": User.model_json_schema()},
24
+ messages=[
25
+ {
26
+ "role": "system",
27
+ "content": "You are a helpful assistant that answers in JSON.",
28
+ },
29
+ {
30
+ "role": "user",
31
+ "content": "Create a user named Alice, who lives in 42, Wonderland Avenue.",
32
+ },
33
+ ],
34
+ )
35
+
36
+ created_user = json.loads(chat_completion.choices[0].message.content)
37
+ print(json.dumps(created_user, indent=2))
38
+
39
+ """
40
+ {
41
+ "address": "42, Wonderland Avenue",
42
+ "name": "Alice"
43
+ }
44
+ """