dhisana 0.0.1.dev228__tar.gz → 0.0.1.dev230__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/PKG-INFO +1 -1
  2. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/setup.py +1 -1
  3. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/compose_search_query.py +2 -2
  4. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/dataframe_tools.py +2 -2
  5. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/enrich_lead_information.py +3 -3
  6. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_email.py +3 -2
  7. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_email_response.py +5 -4
  8. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_linkedin_connect_message.py +3 -2
  9. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_linkedin_response_message.py +3 -2
  10. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_structured_output_internal.py +3 -3
  11. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openai_assistant_and_file_utils.py +3 -3
  12. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openai_helpers.py +2 -2
  13. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/research_lead.py +2 -2
  14. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serpapi_search_tools.py +2 -2
  15. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/test_connect.py +1 -1
  16. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/trasform_json.py +1 -1
  17. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/workflow/test.py +1 -1
  18. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana.egg-info/PKG-INFO +1 -1
  19. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/README.md +0 -0
  20. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/pyproject.toml +0 -0
  21. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/setup.cfg +0 -0
  22. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/__init__.py +0 -0
  23. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/cli/__init__.py +0 -0
  24. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/cli/cli.py +0 -0
  25. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/cli/datasets.py +0 -0
  26. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/cli/models.py +0 -0
  27. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/cli/predictions.py +0 -0
  28. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/schemas/__init__.py +0 -0
  29. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/schemas/common.py +0 -0
  30. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/schemas/sales.py +0 -0
  31. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/ui/__init__.py +0 -0
  32. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/ui/components.py +0 -0
  33. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/__init__.py +0 -0
  34. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/add_mapping.py +0 -0
  35. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/agent_tools.py +0 -0
  36. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/apollo_tools.py +0 -0
  37. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/assistant_tool_tag.py +0 -0
  38. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/built_with_api_tools.py +0 -0
  39. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/cache_output_tools.py +0 -0
  40. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/cache_output_tools_local.py +0 -0
  41. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/check_email_validity_tools.py +0 -0
  42. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/check_for_intent_signal.py +0 -0
  43. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
  44. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/clay_tools.py +0 -0
  45. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/clean_properties.py +0 -0
  46. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/company_utils.py +0 -0
  47. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/compose_salesnav_query.py +0 -0
  48. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
  49. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/composite_tools.py +0 -0
  50. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/domain_parser.py +0 -0
  51. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/email_body_utils.py +0 -0
  52. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/email_parse_helpers.py +0 -0
  53. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/email_provider.py +0 -0
  54. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
  55. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/fetch_openai_config.py +0 -0
  56. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/field_validators.py +0 -0
  57. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/g2_tools.py +0 -0
  58. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_content.py +0 -0
  59. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_flow.py +0 -0
  60. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
  61. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/google_custom_search.py +0 -0
  62. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/google_oauth_tools.py +0 -0
  63. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/google_workspace_tools.py +0 -0
  64. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/hubspot_clearbit.py +0 -0
  65. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
  66. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/instantly_tools.py +0 -0
  67. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/linkedin_crawler.py +0 -0
  68. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/lusha_tools.py +0 -0
  69. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/mailgun_tools.py +0 -0
  70. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/microsoft365_tools.py +0 -0
  71. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
  72. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
  73. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
  74. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
  75. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
  76. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
  77. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/profile.py +0 -0
  78. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/proxy_curl_tools.py +0 -0
  79. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
  80. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/python_function_to_tools.py +0 -0
  81. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
  82. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
  83. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/search_router.py +0 -0
  84. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/search_router_jobs.py +0 -0
  85. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/sendgrid_tools.py +0 -0
  86. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serarch_router_local_business.py +0 -0
  87. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
  88. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
  89. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serpapi_google_search.py +0 -0
  90. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
  91. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
  92. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serperdev_local_business.py +0 -0
  93. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/serperdev_search.py +0 -0
  94. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/smtp_email_tools.py +0 -0
  95. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/web_download_parse_tools.py +0 -0
  96. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/workflow_code_model.py +0 -0
  97. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/utils/zoominfo_tools.py +0 -0
  98. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/workflow/__init__.py +0 -0
  99. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/workflow/agent.py +0 -0
  100. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/workflow/flow.py +0 -0
  101. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana/workflow/task.py +0 -0
  102. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana.egg-info/SOURCES.txt +0 -0
  103. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana.egg-info/dependency_links.txt +0 -0
  104. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana.egg-info/entry_points.txt +0 -0
  105. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana.egg-info/requires.txt +0 -0
  106. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/src/dhisana.egg-info/top_level.txt +0 -0
  107. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_agent_tools.py +0 -0
  108. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_apollo_company_search.py +0 -0
  109. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_apollo_lead_search.py +0 -0
  110. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_connectivity.py +0 -0
  111. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_email_body_utils.py +0 -0
  112. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_google_document.py +0 -0
  113. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_hubspot_call_logs.py +0 -0
  114. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_linkedin_serper.py +0 -0
  115. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_mcp_connectivity.py +0 -0
  116. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_proxycurl_get_company_search_id.py +0 -0
  117. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_proxycurl_job_count.py +0 -0
  118. {dhisana-0.0.1.dev228 → dhisana-0.0.1.dev230}/tests/test_structured_output_with_mcp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev228
3
+ Version: 0.0.1.dev230
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='dhisana',
5
- version='0.0.1-dev228',
5
+ version='0.0.1-dev230',
6
6
  description='A Python SDK for Dhisana AI Platform',
7
7
  author='Admin',
8
8
  author_email='contact@dhisana.ai',
@@ -472,7 +472,7 @@ Output must be valid JSON, e.g.:
472
472
  prompt=prompt,
473
473
  response_format=TechnologyUsedCheck,
474
474
  effort="high",
475
- model="gpt-4.1-mini",
475
+ model="gpt-5.1-chat",
476
476
  tool_config=tool_config
477
477
  )
478
478
 
@@ -534,7 +534,7 @@ Output must be valid JSON, e.g.:
534
534
  prompt=prompt,
535
535
  response_format=TechnologyAndRoleCheck,
536
536
  effort="high",
537
- model="gpt-4.1-mini",
537
+ model="gpt-5.1-chat",
538
538
  tool_config=tool_config
539
539
  )
540
540
 
@@ -33,13 +33,13 @@ class PandasQuery(BaseModel):
33
33
 
34
34
 
35
35
  @assistant_tool
36
- async def get_structured_output(message: str, response_type, model: str = "gpt-4.1-mini"):
36
+ async def get_structured_output(message: str, response_type, model: str = "gpt-5.1-chat"):
37
37
  """
38
38
  Asynchronously retrieves structured output from the OpenAI API based on the input message.
39
39
 
40
40
  :param message: The input message to be processed by the OpenAI API.
41
41
  :param response_type: The expected format of the response (e.g., JSON).
42
- :param model: The model to be used for processing the input message. Defaults to "gpt-4.1-mini".
42
+ :param model: The model to be used for processing the input message. Defaults to "gpt-5.1-chat".
43
43
  :return: A tuple containing the parsed response and a status string ('SUCCESS' or 'FAIL').
44
44
  """
45
45
  try:
@@ -162,7 +162,7 @@ async def get_clean_lead_info_with_llm(lead_info_str: str, tool_config: Optional
162
162
  lead_info, status = await get_structured_output_internal(
163
163
  prompt,
164
164
  BasicLeadInformation,
165
- model="gpt-4.1-mini",
165
+ model="gpt-5.1-chat",
166
166
  tool_config=tool_config
167
167
  )
168
168
  if status == "ERROR":
@@ -493,7 +493,7 @@ async def get_user_linkedin_url_from_github_profile(
493
493
  response, status = await get_structured_output_internal(
494
494
  instructions,
495
495
  UserInfoFromGithubProfileId,
496
- model="gpt-4.1-mini",
496
+ model="gpt-5.1-chat",
497
497
  use_web_search=True,
498
498
  tool_config=tool_config
499
499
  )
@@ -903,7 +903,7 @@ async def get_company_domain_from_llm_web_search(
903
903
  response, status = await get_structured_output_internal(
904
904
  instructions,
905
905
  CompanyInfoFromName,
906
- model="gpt-4.1-mini",
906
+ model="gpt-5.1-chat",
907
907
  use_web_search=True,
908
908
  tool_config=tool_config
909
909
  )
@@ -136,6 +136,7 @@ async def generate_personalized_email_copy(
136
136
  - Make sure the signature in body has the sender_first_name is correct and in the format user has specified.
137
137
  - Do Not Make up information. use the information provided in the context and instructions only.
138
138
  - Make sure the body text is well-formatted and that newline and carriage-return characters are correctly present and preserved in the message body.
139
+ - Do Not use em dash in the generated output.
139
140
 
140
141
  """
141
142
 
@@ -152,7 +153,7 @@ async def generate_personalized_email_copy(
152
153
  prompt=initial_prompt,
153
154
  response_format=EmailCopy,
154
155
  vector_store_id=vector_store_id,
155
- model="gpt-4.1",
156
+ model="gpt-5.1-chat",
156
157
  tool_config=tool_config,
157
158
  use_cache=email_context.message_instructions.use_cache if email_context.message_instructions else True
158
159
  )
@@ -161,7 +162,7 @@ async def generate_personalized_email_copy(
161
162
  initial_response, initial_status = await get_structured_output_internal(
162
163
  prompt=initial_prompt,
163
164
  response_format=EmailCopy,
164
- model="gpt-4.1",
165
+ model="gpt-5.1-chat",
165
166
  tool_config=tool_config,
166
167
  use_cache=email_context.message_instructions.use_cache if email_context.message_instructions else True
167
168
  )
@@ -194,7 +194,7 @@ async def get_inbound_email_triage_action(
194
194
  triage_only, status = await get_structured_output_with_assistant_and_vector_store(
195
195
  prompt=triage_prompt,
196
196
  response_format=InboundEmailTriageResponse,
197
- model="gpt-4.1",
197
+ model="gpt-5.1-chat",
198
198
  vector_store_id=cleaned_context.external_known_data.external_openai_vector_store_id,
199
199
  tool_config=tool_config,
200
200
  use_cache=cleaned_context.message_instructions.use_cache if cleaned_context.message_instructions else True
@@ -203,7 +203,7 @@ async def get_inbound_email_triage_action(
203
203
  triage_only, status = await get_structured_output_internal(
204
204
  prompt=triage_prompt,
205
205
  response_format=InboundEmailTriageResponse,
206
- model="gpt-4.1",
206
+ model="gpt-5.1-chat",
207
207
  tool_config=tool_config,
208
208
  use_cache=cleaned_context.message_instructions.use_cache if cleaned_context.message_instructions else True
209
209
  )
@@ -353,6 +353,7 @@ async def generate_inbound_email_response_copy(
353
353
  DO NOT share any link to internal or made up document. You can attach or send any document.
354
354
  If the user is asking for any additional document END_CONVERSATION and let Account executive handle it.
355
355
  - Make sure the body text is well-formatted and that newline and carriage-return characters are correctly present and preserved in the message body.
356
+ - Do Not use em dash in the generated output.
356
357
 
357
358
  Required JSON output
358
359
  --------------------
@@ -376,7 +377,7 @@ async def generate_inbound_email_response_copy(
376
377
  initial_response, status = await get_structured_output_with_assistant_and_vector_store(
377
378
  prompt=prompt,
378
379
  response_format=InboundEmailTriageResponse,
379
- model="gpt-4.1",
380
+ model="gpt-5.1-chat",
380
381
  vector_store_id=cleaned_context.external_known_data.external_openai_vector_store_id,
381
382
  tool_config=tool_config
382
383
  )
@@ -384,7 +385,7 @@ async def generate_inbound_email_response_copy(
384
385
  initial_response, status = await get_structured_output_internal(
385
386
  prompt=prompt,
386
387
  response_format=InboundEmailTriageResponse,
387
- model="gpt-4.1",
388
+ model="gpt-5.1-chat",
388
389
  tool_config=tool_config
389
390
  )
390
391
 
@@ -136,6 +136,7 @@ async def generate_personalized_linkedin_copy(
136
136
  - Make sure the signature in body has the sender_first_name is correct and in the format user has specified.
137
137
  - User conversational name for company name if used.
138
138
  - Make sure the body text is well-formatted and that newline and carriage-return characters are correctly present and preserved in the message body.
139
+ - Do Not use em dash in the generated output.
139
140
  """
140
141
 
141
142
  vector_store_id = (
@@ -149,7 +150,7 @@ async def generate_personalized_linkedin_copy(
149
150
  prompt=prompt,
150
151
  response_format=LinkedInConnectMessage,
151
152
  vector_store_id=vector_store_id,
152
- model="gpt-4.1",
153
+ model="gpt-5.1-chat",
153
154
  tool_config=tool_config,
154
155
  use_cache=linkedin_context.message_instructions.use_cache if linkedin_context.message_instructions else True
155
156
  )
@@ -158,7 +159,7 @@ async def generate_personalized_linkedin_copy(
158
159
  response_data, status = await get_structured_output_internal(
159
160
  prompt=prompt,
160
161
  response_format=LinkedInConnectMessage,
161
- model="gpt-4.1",
162
+ model="gpt-5.1-chat",
162
163
  tool_config=tool_config,
163
164
  use_cache=linkedin_context.message_instructions.use_cache if linkedin_context.message_instructions else True
164
165
  )
@@ -205,6 +205,7 @@ async def generate_linkedin_response_message_copy(
205
205
  DO NOT share any link to internal or made up document. You can attach or send any document.
206
206
  If the user is asking for any additional document END_CONVERSATION and let Account executive handle it.
207
207
  Make sure the body text is well-formatted and that newline and carriage-return characters are correctly present and preserved in the message body.
208
+ - Do Not use em dash in the generated output.
208
209
 
209
210
  Required JSON output
210
211
  --------------------
@@ -224,7 +225,7 @@ async def generate_linkedin_response_message_copy(
224
225
  initial_response, status = await get_structured_output_with_assistant_and_vector_store(
225
226
  prompt=prompt,
226
227
  response_format=LinkedInTriageResponse,
227
- model="gpt-4.1",
228
+ model="gpt-5.1-chat",
228
229
  vector_store_id=cleaned_context.external_known_data.external_openai_vector_store_id,
229
230
  tool_config=tool_config,
230
231
  use_cache=linkedin_context.message_instructions.use_cache if linkedin_context.message_instructions else True
@@ -233,7 +234,7 @@ async def generate_linkedin_response_message_copy(
233
234
  initial_response, status = await get_structured_output_internal(
234
235
  prompt,
235
236
  LinkedInTriageResponse,
236
- model="gpt-4.1",
237
+ model="gpt-5.1-chat",
237
238
  tool_config=tool_config,
238
239
  use_cache=linkedin_context.message_instructions.use_cache if linkedin_context.message_instructions else True
239
240
  )
@@ -56,7 +56,7 @@ async def get_structured_output_internal(
56
56
  response_format: BaseModel,
57
57
  effort: str = "low",
58
58
  use_web_search: bool = False,
59
- model: str = "gpt-4.1-mini",
59
+ model: str = "gpt-5.1-chat",
60
60
  tool_config: Optional[List[Dict]] = None,
61
61
  use_cache: bool = True
62
62
  ):
@@ -217,7 +217,7 @@ async def get_structured_output_with_mcp(
217
217
  response_format: BaseModel,
218
218
  effort: str = "low",
219
219
  use_web_search: bool = False,
220
- model: str = "gpt-4.1-mini",
220
+ model: str = "gpt-5.1-chat",
221
221
  tool_config: Optional[List[Dict[str, Any]]] = None,
222
222
  ) -> Tuple[Union[BaseModel, str], str]:
223
223
  """
@@ -376,7 +376,7 @@ async def get_structured_output_with_assistant_and_vector_store(
376
376
  response_format: BaseModel,
377
377
  vector_store_id: str,
378
378
  effort: str = "low",
379
- model="gpt-4.1-mini",
379
+ model="gpt-5.1-chat",
380
380
  tool_config: Optional[List[Dict]] = None,
381
381
  use_cache: bool = True
382
382
  ):
@@ -169,7 +169,7 @@ async def delete_files(
169
169
  async def run_file_search(
170
170
  query: str,
171
171
  vector_store_id: str,
172
- model: str = "gpt-4.1-mini",
172
+ model: str = "gpt-5.1-chat",
173
173
  max_num_results: int = 5,
174
174
  store: bool = True,
175
175
  tool_config: Optional[List[Dict]] = None,
@@ -213,7 +213,7 @@ async def run_file_search(
213
213
 
214
214
  async def run_response_text(
215
215
  prompt: str,
216
- model: str = "gpt-4.1-mini",
216
+ model: str = "gpt-5.1-chat",
217
217
  max_tokens: int = 2048,
218
218
  store: bool = True,
219
219
  tool_config: Optional[List[Dict]] = None,
@@ -237,7 +237,7 @@ async def run_response_text(
237
237
  async def run_response_structured(
238
238
  prompt: str,
239
239
  response_format: dict,
240
- model: str = "gpt-4.1-mini",
240
+ model: str = "gpt-5.1-chat",
241
241
  max_tokens: int = 1024,
242
242
  store: bool = True,
243
243
  tool_config: Optional[List[Dict]] = None,
@@ -330,7 +330,7 @@ async def process_agent_request(row_batch: List[Dict], workflow: Dict, custom_in
330
330
  name="AI Assistant",
331
331
  instructions=instructions,
332
332
  tools=[],
333
- model="gpt-4.1-mini"
333
+ model="gpt-5.1-chat"
334
334
  )
335
335
  thread = await client.beta.threads.create()
336
336
  parsed_outputs = []
@@ -955,7 +955,7 @@ async def get_function_call_arguments(input_text: str, function_name: str) -> Tu
955
955
 
956
956
  # Make the API call
957
957
  response = await client.beta.chat.completions.parse(
958
- model="gpt-4.1-mini",
958
+ model="gpt-5.1-chat",
959
959
  messages=[
960
960
  {"role": "system", "content": "Extract function arguments in JSON format."},
961
961
  {"role": "user", "content": prompt},
@@ -91,7 +91,7 @@ async def research_lead_with_full_info_ai(
91
91
  response, status = await get_structured_output_internal(
92
92
  instructions,
93
93
  LeadResearchInformation,
94
- model="gpt-4.1-mini",
94
+ model="gpt-5.1-chat",
95
95
  tool_config=tool_config
96
96
  )
97
97
  if status == "SUCCESS":
@@ -165,7 +165,7 @@ async def research_company_with_full_info_ai(
165
165
  response, status = await get_structured_output_internal(
166
166
  instructions,
167
167
  CompanyResearchInformation,
168
- model="gpt-4.1-mini",
168
+ model="gpt-5.1-chat",
169
169
  use_web_search=False,
170
170
  tool_config=tool_config
171
171
  )
@@ -51,7 +51,7 @@ async def get_structured_output(text: str, tool_config: Optional[List[Dict]] = N
51
51
  f"Text:\n{text}"
52
52
  )
53
53
  result, status = await get_structured_output_internal(
54
- prompt, LeadSearchResult, model = "gpt-4.1-nano", tool_config=tool_config
54
+ prompt, LeadSearchResult, model = "gpt-5.1-chat", tool_config=tool_config
55
55
  )
56
56
  if status != "SUCCESS" or result is None:
57
57
  return LeadSearchResult()
@@ -137,7 +137,7 @@ async def pick_best_linkedin_candidate_with_llm(
137
137
  result, status = await get_structured_output_internal(
138
138
  prompt,
139
139
  LinkedinCandidateChoice,
140
- model="gpt-4.1-mini",
140
+ model="gpt-5.1-chat",
141
141
  tool_config=tool_config,
142
142
  )
143
143
 
@@ -1619,7 +1619,7 @@ async def test_connectivity(tool_config: List[Dict[str, Any]]) -> Dict[str, Dict
1619
1619
 
1620
1620
  # OpenAI needs extra args
1621
1621
  if tool_name == "openai":
1622
- model_name = next((c["value"] for c in config_entries if c["name"] == "modelName"), "gpt-4o-mini")
1622
+ model_name = next((c["value"] for c in config_entries if c["name"] == "modelName"), "gpt-5.1-chat")
1623
1623
  reasoning_effort = next((c["value"] for c in config_entries if c["name"] == "reasoningEffort"), "medium")
1624
1624
  results[tool_name] = await test_openai(api_key, model_name, reasoning_effort)
1625
1625
 
@@ -159,7 +159,7 @@ async def create_property_mapping(
159
159
  prompt=user_prompt,
160
160
  response_format=PropertyMappingList,
161
161
  effort="high",
162
- model="gpt-4.1-mini",
162
+ model="gpt-5.1-chat",
163
163
  tool_config=tool_config
164
164
  )
165
165
  if status == "SUCCESS" and response and response.properties:
@@ -21,7 +21,7 @@ async def call_openai_api(system_content: str, user_content: str, max_tokens: in
21
21
  try:
22
22
  # Call the OpenAI API using the new client method
23
23
  response = client.chat.completions.create(
24
- model="gpt-4.1-mini",
24
+ model="gpt-5.1-chat",
25
25
  messages=[
26
26
  {"role": "system", "content": system_content},
27
27
  {"role": "user", "content": user_content}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev228
3
+ Version: 0.0.1.dev230
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
File without changes
File without changes